import logging 日志模块
转载:https://mp.weixin.qq.com/s/K3k-Mk75tSe-Z8cTooyJTg https://blog.csdn.net/zywvvd/article/details/87857816 记录日志最简单的方法就是在要记录的地方print,但这种方法打印出来没有时间,也不知道日志记录的位置,没有可读的日记格式,因此需要使用python内置logging模块。 1.logging日志框架 主要包括四部分: (1)Logger(记录器) 返回具有指定名称的记录器,如果未指定名称,则返回作为层次结构的根记录器 (2)Handler(处理器) 将logger发过来的信息进行准确地分配,送往正确的地方,(如控制台、文件等) Python内置了很多实用的处理器,常用的有: 1、StreamHandler 标准流处理器,将消息发送到标准输出流、错误流 2、FileHandler 文件处理器,将消息发送到文件 3、RotatingFileHandler 文件处理器,文件达到指定大小后,启用新文件存储日志 4、TimedRotatingFileHandler 文件处理器,日志以特定的时间间隔轮换日志文件 (3)Formatter(格式器) 指定最终某条记录打印的格式布局,并将传递来的数据拼接成一条具体的字符串。 Format中有一些自带的LogRecord属性可以使用,如下表格: (4)Filter(过滤器) 提供更细粒度的判断,来决定日志是否需要打印。如Filter能够对来自特定源的日志进行拦截或修改甚至修改其日志级别(修改后再进行级别判断)。 2.日志级别 3.常用函数 (1)logging.basicConfig() 对日志系统进行基本配置。如果根记录器已配置处理程序,则此函数不执行任何操作。关键字参数: filename :日志文件的保存路径。如果配置了些参数,将自动创建一个FileHandler作为Handler; filemode :日志文件的打开模式。 默认值为’a’,表示日志消息以追加的形式添加到日志文件中。如果设为’w’, 那么每次程序启动的时候都会创建一个新的日志文件; format :设置日志输出格式; datefmt :定义日期格式; level :设置日志的级别.对低于该级别的日志消息将被忽略; stream :设置特定的流用于初始化StreamHandler; (2)logging.getLogger() 返回日志对象层次关系中的根记录器。 (3)logging.getLevelName() 获取日志级别对应的名称。 (4)logger.setLevel(): 设置日志的级别。对于低于该级别的日志消息将被忽略。 4.基本使用 (1)
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("this is debug")
logging.info("this is info")
logging.warning("this is warning")
logging.error("this is error")
logging.critical("this is critical")
'''打印结果
DEBUG:root:this is debug
INFO:root:this is info
WARNING:root:this is warning
ERROR:root:this is error
CRITICAL:root:this is critical
'''
import logging
logging.basicConfig()
logging.debug("this is debug")
logging.info("this is info")
logging.warning("this is warning")
logging.error("this is error")
logging.critical("this is critical")
'''打印结果
WARNING:root:this is warning
ERROR:root:this is error
CRITICAL:root:this is critical
基本配置默认日志级别为WARGING,低于WARING的日志信息都不会输出
'''
(2)指定日志格式
import logging
logging.basicConfig(format='%(asctime)s %(levelname)s %(name)s %(message)s')
logging.error("this is error")
'''打印结果
2021-12-23 16:44:21,547 ERROR root this is error
'''
|