日志记录级别为info,但仅显示警告。 Python日志记录

时间:2020-11-11 08:52:31

标签: python python-3.7

我们有一个小的配置类,该类可以以某种特殊格式返回记录器对象(来自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吗?

1 个答案:

答案 0 :(得分:1)

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

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