二十八、深入浅出Python中的 logging模块

「@Author: Runsen」
【二十八、深入浅出Python中的 logging模块】logging模块是Python内置的标准模块 , 主要用于输出脚本运行日志 , 可以设置输出日志的等级、日志保存路径等 。
日志日志是一种可以追踪某些软件运行时所发生事件的方法 。
软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情 。 一个事件可以用一个可包含可选变量数据的消息来描述 。 此外 , 事件也有重要性的概念 , 这个重要性也可以被称为严重性级(level) 。
五个级别其中Logging一共有五种级别 , 依次是DEBUG < INFO < WARNING < ERROR < CRITICAL
二十八、深入浅出Python中的 logging模块文章插图
# @Author:Runsen#引入了 logging 模块import loggingLOG_FORMAT = "%(asctime)s----%(name)s----%(levelname)s----%(message)s"#level 配置为 WARNING 信息 , 即只输出 WARNING 级别及其以上的信息 , # format指定了 format 格式的字符串 , 包括asctime运行时间 name模块名称、levelname(日志级别)message (日志内容)logging.basicConfig(level=logging.WARNING,format=LOG_FORMAT)logging.debug("This is a debug log")logging.info("This is a info log")logging.warning("This is a warning log")logging.error("This is a error log")logging.critical("This is a critical log")具体输出如下 。
2020-10-31 12:15:13,181----WARNING----This is a warning log2020-10-31 12:15:13,181----ERROR----This is a error log2020-10-31 12:15:13,182----CRITICAL----This is a critical log为什么DEBUG和INFO的信息没有输出?
因为我们在全局配置的时候设置了输出为 WARNING 级别 , 所以 DEBUG和INFO 级别的信息就被过滤掉了 。
日志信息的输出格式在basicConfig 的format参数指定日志信息的输出格式 。
二十八、深入浅出Python中的 logging模块文章插图
logging模块logging模块是Python内置的标准模块 , 主要用于输出运行日志 , 可以设置输出日志的等级、日志保存路径、日志文件和回滚等; 可以说 , logging模块主要由4部分组成 , 分别是Logger , Handler , Filters和Formatter 。
二十八、深入浅出Python中的 logging模块文章插图
模块化组件使用模块化组件使用流程:

  • 创建一个logger(日志处理器)对象
  • 定义handler(日志处理器) , 决定把日志发到哪里 。 常用的有StreamHandler , 输出到控制台 。 FileHandler输出到文件 。
  • 设置日志级别(level)和输出格式Formatters(日志格式器)
  • 把handler添加到对应的logger中去
  • 日志输出
具体示例代码如下:
'''@Author:Runsen@Wechat:RunsenL'''import osimport timeimport logging# 第一步、创建一个logger(日志处理器)对象logger = logging.getLogger("%s_log" % __name__)logger.setLevel(logging.INFO)# 第三步、定义handler(日志处理器) , 决定把日志发到哪里 。 这里设置FileHandler输出到文件 。 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))# 在当前路径下新建logs文件夹if os.path.exists("Logs"):passelse:os.mkdir("Logs")log_name = "./Logs/"+ rq + '.log'print(log_name)# a模式追加handler = logging.FileHandler(log_name, mode='w')handler.setLevel(logging.WARNING)# 第三步、设置日志级别(level)和输出格式Formatters(日志格式器)formatter = logging.Formatter("%(asctime)s----%(filename)s----[line:%(lineno)d]----%(levelname)s:%(message)s")handler.setFormatter(formatter)# 第四步、把handler添加到对应的logger中去logger.addHandler(handler)# 第五步、日志输出logger.debug('this is a logger debug message')logger.info('this is a logger info message')logger.warning('this is a logger warning message')logger.error('this is a logger error message')logger.critical('this is a logger critical message')具体的Logs文件夹中Log文件内容如下 。
二十八、深入浅出Python中的 logging模块文章插图
?
本文已收录 GitHub , 传送门~[1], 里面更有大厂面试完整考点 , 欢迎 Star 。
?
Reference[1]
传送门~: