设置处理程序和日志级别后,记录器不会打印调试消息

时间:2018-12-04 00:02:17

标签: python python-3.x logging

我有以下基于Logging Cookbooklogging测试的极简示例:

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日志消息出现在上面的示例中。

1 个答案:

答案 0 :(得分:0)

如果未显式设置记录器的级别,则系统将查找祖先记录器的级别,直到到达显式设置了级别的记录器为止。在这种情况下,它是根记录器,它是名为“ test”的记录器的父级。将此记录器或根记录器的级别设置为DEBUG会导致输出日志消息。有关Python日志记录中的事件信息流,请参见文档的this part