【发布时间】:2022-01-17 06:12:23
【问题描述】:
我有一个示例记录器,我认为它没有处理程序,但它会输出日志消息。代码如下:
import logging
ll = logging.getLogger('ll')
print("Has handlers:", ll.hasHandlers())
print("Handlers:", ll.handlers)
ll.propagate = False
ll.warning("Logging with no Handler!")
结果表明记录器没有处理程序,有一个空的处理程序列表,但它会打印输出:
% python example.py
Has handlers: False
Handlers: []
Logging with no Handler!
%
为什么会这样?是否需要添加NullHandler() 才能停止输出?
【问题讨论】:
-
相信root logger的默认配置会打印出warnings及以上。考虑致电
logging.basicConfig。 -
是的。我假设如果我曾 调用
logging.basicConfig,这将起作用。我很惊讶它没有它也能工作。 -
我认为将
propagate设置为False仅适用于在本地处理的消息。如果没有特定的处理程序,它将始终传递给父处理程序。
标签: python python-3.x logging