没有处理程序的记录器日志记录

时间:2020-10-28 10:26:55

标签: python-3.x logging

为什么脚本具有:

import logging

logger = logging.getLogger(__name__)
logger.warning("warning message")

即使没有处理程序,也会向stderr发出消息吗?随后致电:

logger.setLevel(logging.DEBUG)
logger.info("info_message")
除非我先附加一个处理程序,否则

不会记录任何内容。检查了层次结构,该记录器的父级是没有处理程序的根。

1 个答案:

答案 0 :(得分:0)

因为有一个logging.lastResort处理程序

通过此属性可以使用handler of last resort。这个 是以警告级别写入sys.stderr的StreamHandler,并且 用于在没有任何日志记录的情况下处理日志记录事件 组态。最终结果是仅将消息打印到 sys.stderr。这将替换先前的错误消息,即“否 可以为记录器XYZ找到处理程序”。如果您需要更早 行为出于某种原因,可以将lastResort设置为None。

3.2版中的新功能。

您未设置记录器的记录级别,因此为NOTSET。它接受任何日志记录并传播到根记录器。

根记录器级别的默认级别为WARNING,因此仅处理该级别的日志记录。

由于根目录中没有处理程序,因此使用lastResort处理程序。