您的位置:

Python日志模块: logging用法介绍

Python日志模块: logging用法介绍

更新:

一、Python logging模块介绍

Python中的日志模块叫做logging模块,它提供了一个灵活、强大且全面的日志框架,同样也是Python标准库的一部分。logging模块的主要作用是记录日志,并且可以对日志进行分类和过滤,并且支持不同的输出方式。

Python中logging 提供四个级别用于控制文件输出格式以及输出哪些日志信息,分别是:

  • DEBUG: 调试信息,最详细的日志信息,包含详细的变量信息等
  • INFO: 证明程序按预期运行
  • WARNING: 某些意想不到的事情发生或指出需要注意的情况,但是程序还是在正常运行
  • ERROR: 由于更严重的问题,程序已不能执行一些功能

二、日志基本用法

下面是Python日志模块的基本用法,可以帮助您开始记录日志。

import logging

logging.debug('示例debug信息')
logging.info('示例info信息')
logging.warning('示例warn信息')
logging.error('示例error信息')
logging.critical('示例critical信息')

三、设置日志输出方式

logging模块提供了丰富的输出方式,我们可以把日志输出到文件中,命令行终端或者其他地方,甚至可以自定义日志输出方式。

1、输出到文件

import logging

logging.basicConfig(filename='example.log', level=logging.DEBUG)
logging.debug('原始信息')

执行这段代码后,logging模块会将debug信息写入到example.log文件中。

如果要将warning信息也写入到example.log中,则可以在basicConfig函数中增加参数:logging.WARNING

import logging

logging.basicConfig(filename='example.log', level=logging.WARNING)
logging.debug('原始信息')
logging.warning('警告信息')

2、输出到命令行终端

import logging

logging.getLogger().setLevel(logging.DEBUG)
logging.debug('示例debug信息')
logging.info('示例info信息')
logging.warning('示例warn信息')
logging.error('示例error信息')
logging.critical('示例critical信息')

这个例子将日志级别设置为DEBUG,因此所有消息都将被输出,如果要将日志消息的级别降低,只需将setLevel调用list为你选择的消息级别即可。

4、自定义输出方式

logging不仅支持输出到文件和命令行终端,还支持自定义输出方式,比如将日志消息发送到邮件地址,通过http传输等等。

四、设置日志格式

log记录对于Debugging非常重要,但是信息有时候太多、太杂乱无章,也许需要一个更好的可读性或格式化,这时候就需要进行日志格式化输出。

下面是Python logging模块设置日志格式的基本用法:

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('一个Debug信息')
logging.info('一个info信息')
logging.warning('一个警告信息')
logging.error('一个错误信息')
logging.critical('一个关键信息')

可以看到,在这段代码中,我们使用了两个参数:level和format。level用来设置被记录的消息最低级别,format用来指定输出的格式。

“%(asctime)s”:日志事件发生时间。注意,这个格式化字符串使用的是asctime而不是datefmt。

“%(levelname)s”:和日志事件的level名称。

“%(message)s”:日志事件的信息字符串。

五、总结

Python logging模块是一个非常实用的模块,同时也是Python的标准库的一部分。本文我们从模块介绍,基本用法,设置日志输出方式,设置日志格式四方面对logging模块进行了详细的阐述。希望能够帮助大家更好的使用Python实现高效日志记录。