官方介绍
logging library
API - https://docs.python.org/3/library/logging.html
config - https://docs.python.org/3/library/logging.config.html
handlers - https://docs.python.org/3/library/logging.handlers.html
logging howto
https://docs.python.org/3/howto/logging.html
https://docs.python.org/3/howto/logging-cookbook.html
如若英文文档阅读能力不够,可转换中文简体快速查阅,不过还是建议直接阅读英文版
个人理解
logging模块是python的日志记录工具,其提供了很好的接口和使用规范,方便应用python时对日志进行系统管理。
logging模块即是对print函数的针对性封装,并根据任务或者实际需要定义出不同级别的适用性,一般如下:
debug()
info()
warning()
error()
critical()
其处理通常直接输出到控制台,但在实际应用时更倾向于写入磁盘文件以便追踪查询
一句话,logging相对print来说可以更好控制输出在哪个地方,怎么输出及控制消息级别来过滤掉那些不需要的信息
简单应用
1)单模块应用
import logging
logging.info('Hello')
logging.warning('World')
结果:WARNING:root:World
其会以默认basicConfig()的形式输出到终端,注意默认level是warning
2)多模块应用
注意:由 basicConfig() 设置的消息默认格式为:
severity:logger name:message
3)更改输出形式
如:logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
4)插入日志输出日期&时间
日志库模块化
1)Logger(记录器)
getLogger()返回对具有指定名称的记录器实例的引用(如果已提供),或者如果没有则返回 root 。
logger=logging.getLogger(__name__)
logger.setLevel()
2)Handler(处理器)
logger.addHandler 和 logger.removeHandler
标准库包含很多处理器类型(参见 有用的处理器 );教程主要使用 StreamHandler 和 FileHandler 。
可配置接口有:setLevel()、setFormatter()、addFilter()、removeFilter()
3)Filter(过滤器)
logger.addFilter() 和 logger.removeFilter()
4)Formatter(格式器)
logging.Formatter()
格式化器对象配置日志消息的最终顺序、结构和内容。 与 logging.Handler 类不同,应用程序代码可以实例化格式器类,但如果应用程序需要特殊行为,则可能会对格式化器进行子类化定制。构造函数有三个可选参数 —— 消息格式字符串、日期格式字符串和样式指示符。logging.Formatter.__init__(fmt=None, datefmt=None, style='%')
常用格式 - 记录时间、消息的严重性以及消息的内容:
'%(asctime)s - %(levelname)s - %(message)s'
5)应用示例