首页 > 解决方案 > 日志记录级别是信息,但只显示警告。Python 日志记录

问题描述

我们有一个小的配置类,它可以返回一个logging带有一些特殊格式的记录器对象(来自模块,而不是自定义对象)。记录器级别为 20,但不会打印低于警告的任何内容。是否有任何其他参数会影响日志记录行为?下面,稍微执行一下我的意思:

logger = config_object.make_logger()
logger.setLevel(10)

# Prints logger attrs
print(logger.name)
print(logger.disabled)
print(logger.filters)
print(logger.level)

# Logger behaviour seems not right
logger.critical(f'method critical')
logger.error(f'method error')
logger.warning(f'method warning')
logger.info(f'method info')
logger.debug(f'method debug')

上面的代码输出以下内容:

__main__
False
[]
10
method critical
method error
method warning

如果logger.level是 10,它不应该一直记录到debug吗?

标签: pythonpython-3.7

解决方案


来自日志处理程序的官方文档:

setLevel()就像在对象中一样,该方法logger指定将被分派到适当目的地的最低严重性。为什么有两种setLevel()方法?记录器中设置的级别决定了它将传递给其处理程序的消息的严重性。每个处理程序中设置的级别决定了该处理程序将发送哪些消息。


推荐阅读