【发布时间】:2018-12-04 00:02:16
【问题描述】:
我有以下基于Logging Cookbook 的logging 测试的极简示例:
import logging
logger = logging.getLogger('test')
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - '
'%(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
print(logger.handlers)
logger.debug('hello world')
以上产生以下输出:
$ python test_log.py
[<StreamHandler <stderr> (DEBUG)>]
由于我已经定义了一个处理程序并将日志级别设置为调试,我希望 hello world 日志消息会显示在上面的示例中。
【问题讨论】:
-
因为您的记录器(不是处理程序)在您的示例代码中具有级别
NOTSET,这意味着它会将事件传播到其唯一的祖先,即根记录器,它实际上没有处理程序输出一些东西。尽管我不喜欢参考自己的答案; here's 答案的长版本。简短的版本是:在开始使用记录器之前将logger.setLevel(logging.DEBUG)添加到您的代码中。
标签: python python-3.x logging