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

标签 python python-3.x logging

我有以下基于Logging Cookbook日志记录测试的简约示例:

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

最佳答案

如果未显式设置记录器的级别,系统将查找祖先记录器的级别,直到找到显式设置级别的记录器。在本例中,根记录器是名为“test”的记录器的父记录器。将此记录器或根记录器的级别设置为 DEBUG 将导致输出日志消息。请参阅this part Python 日志记录中事件信息流的文档。

关于python - 设置处理程序和日志级别后,记录器不打印调试消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53603789/

相关文章:

python - Pandas 矢量化中的复杂条件

python - 从 numpy 矩阵中查找值列表的行索引

Python 重复单词

Python + PyCharm 文件结构问题 : AttributeError: 'module' object has no attribute 'X'

java - 如何动态更改 log4j 日志文件?

svn - Subversion 用于查看修订历史记录并记录源代码

python - 如何获得最少使用的元素?

python - 溢出错误图

python - 标记化单词列表

sql-server - Linq to SQL 审计跟踪/审计日志 : should I use triggers or doddleaudit?