python-日志模块-logging

本文详细介绍了Python的日志模块,包括日志级别的设置、运行级别的修改、日志内容的保存及格式化输出。同时,讲解了如何通过日志对象同时在屏幕和文件中显示日志,以及日志对象的配置和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日志模块

导入

import logging

在这里插入图片描述

logging,就是日志单词 log的现在进行时

一个动作正在进行

吃饭,吃饭中

打怪,打怪中

日志的五个级别

在这里插入图片描述

在这里插入图片描述
日志级别的用法

模块名.方法名()
logging.级别(str要显示的内容)

例子:

import logging

num = input("请输入一个数字")

try:
    int_num = int(num)
except:
    logging.error("非法的输入{}".format(num))
print('结束了')

日志的运行级别

默认的运行级别是warning,警告级别

修改运行级别,可以让更低级别的被显示出来

logging.basicConfig(level=logging.DEBUG)

日志保存为文件

新增 filename配置

logging.basicConfig(
    level=logging.DEBUG,
    filename=文件的路径
)

当设置了日志保存在文件时

信息就不会再屏幕上显示了

修改日志的保存模式

默认是追加模式

如果希望通过定入赋盖模式

filemode="w",
logging.basicConfig(
    level=logging.DEBUG,
    filename="mylog.log",
    filemode="w",
)

格式化输出日志显示的内容

回顾以前的格式化输出

用一个例子来回顾

m = "我的名字叫%s,我的身高是%.2f,我今年%d,我的学号是%04d" %("吕小布", 1.7444, 22, 32)
print(m)

结果
C:\Users\python_hui\Anaconda3\python.exe G:/教学管理系统1907/oneone/test.py
我的名字叫吕小布,我的身高是1.74,我今年22,我的学号是0032

Process finished with exit code 0

对于logging模块中,日志的格式化输出

用法格式

format = "%(类型)s"

更多类型
在这里插入图片描述

演示代码

import logging

logging.basicConfig(
    level=logging.DEBUG,
    filename="mylog.log",
    filemode="w",
    format="%(asctime)s %(filename)s %(lineno)s: %(message)s"
)

num = input("请输入一个数字")

try:
    int_num = int(num)
except:
    logging.info("非法的输入{}".format(num))
print('结束了')

写模式的代码,每一次日志的内容,都会被重写

效果

2019-07-01 14:01:29,433 test_log.py 15: 非法的输入b

获得日志对象

获取方式

logging.getLogger()

import logging

# 获得日志对象
logger = logging.getLogger()
print(logger)
print(logger.__dict__)

日志对象的属性字典

{‘filters’: [], ‘name’: ‘root’, ‘level’: 30, ‘parent’: None, ‘propagate’: True, ‘handlers’: [], ‘disabled’: False, ‘_cache’: {}}

日志对象的特点

可以实现,同时,在屏幕上显示 内容,和文件中输出内容

它这样操作的机理,是需要两个对象支持的

对象一,是文件处理器,filehandler

对象二,屏幕处理器,streamhandler

日志对象的完整配置

import logging,os,time

def get_logger():
    """
    获取日志对象,已经对日志对象进行了相关的设置了
    :return:
    """
    # 生成日志对象
    logger = logging.getLogger()
    # 设置提示级别
    logger.setLevel("INFO")
    # 生成日志保存路径
    current_dir = os.path.dirname(os.path.abspath(__file__))
    logger_file_path = os.path.join(current_dir, time.strftime("%Y%m%d")+".log")
    # 设置输出对象
    file_handler = logging.FileHandler(logger_file_path, encoding="utf8")
    stream_handler = logging.StreamHandler()
    # 设置日志输出的格式
    fmt = logging.Formatter("%(asctime)s %(filename)s %(lineno)s : %(message)s")
    # 设置输出对象按照格式来输出
    file_handler.setFormatter(fmt)
    # 日志对象添加输出对象
    if not logger.handlers:
        logger.addHandler(file_handler)
        logger.addHandler(stream_handler)
    return logger

if __name__ == '__main__':

    l = get_logger()
    l.info('haha')

图示日志模块

在这里插入图片描述
更正,图片器对象有setformatter方法

处理器对象包括了文件处理器对象,流处理器对象

日志对象的使用

当日志对象配置好了以后,如果使用,格式为

日志对象.运行级别(str日志内容)

例子:
logger.info("启动运行功能")

------------以下是备课笔记----------------------

日志模块帮助我们记录信息

在这里插入图片描述
在这里插入图片描述

非常重要的模块

示例

在这里插入图片描述

日志级别,五个

在这里插入图片描述

设置运行级别
在这里插入图片描述

在这里插入图片描述
默认信息显示在控制台的

在这里插入图片描述
设置后内容输出到文件了

默认是追加模式

在这里插入图片描述
将追加模式设置为写模式,默认是追加模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
显示时间与行号

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

加文件名,加日志内容

在这里插入图片描述
其它参数

日志对象

在这里插入图片描述

日志对象

在这里插入图片描述

在这里插入图片描述
屏幕与文件对象,不完整版

在这里插入图片描述

大鱼吃小鱼,小鱼吃虾米的方式

在这里插入图片描述

生态链

在这里插入图片描述
打印日志

屏幕与文件同时显示

在这里插入图片描述

默认warning模式

在这里插入图片描述

修改日志对象的默认级别

在这里插入图片描述

在这里插入图片描述
开发实用

把日志的设置处理一下

让函数返回一个logger对象

用时直接调对象的方法

回顾

在这里插入图片描述
添加日志

在这里插入图片描述
日志的子对象

getLogger参数写名称

在这里插入图片描述

在这里插入图片描述

根,子,孙子,层级

在这里插入图片描述

根对象,输出

子对象也在输出时

子对象会输出多次

原因是,子对象输出时看看上级,上也在输出,自己会再次输出

解决重复输出的办法, 让上级对象停止输出就可

在这里插入图片描述
设置日志文件的编码为 utf8编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值