Python 日志库 logging 的理解和实践经验
本文从 Python logging 库的基础概念入手,理解 logging 库的执行流程,以及可能忽视的一些细节。 日志级别 logging 库预置了 5 个错误级别,还有一个 NOTSET 级别,作为 logger 的默认值。 CRITICAL = 50 ERROR = 40 WARNING = 30 INFO = 20 DEBUG = 10 NOTSET = 0 logging 库也支持自定义错误级别,通过上面的源码可以看到,在不同级别的错误中间预留了 10 个数字的位置,方便我们在预置错误级别的基础上添加更细致的错误级别。 import logging logging.addLevelName(31, 'SERIOUS WARNING') logger = logging.getLogger('log') logger.warn('warn info') logger.log(logging.getLevelName('SERIOUS_WARNING'), 'serious warn') 例如添加一个 SERIOUS WARNING 类型的错误,值为 31,就可以用 log 方法输出该级别的错误。 也可以覆盖 logging 预置的错误级别,例如将 WARNING 修改为 SERIOUS WARNING。 logging.addLevelName(30, 'SERIOUS WARNING') logger = logging.getLogger('log') print(logging.getLevelName(30)) # SERIOUS WARNING LogRecord、Formatter logging 库中的每一条 log 都以 LogRecord 的形式存在,当调用 logger 打印 log 时候,都会有一条 LogRecord 被自动创建出来,LogRecord 中包含了大量的和该条日志相关的属性,也包含用户传入的 message。 ...