我们有一个小的配置类,该类可以以某种特殊格式返回记录器对象(来自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
吗?
答案 0 :(得分:1)
来自官方doc的日志处理程序:
setLevel()
方法与logger
对象中一样,指定将分派到适当目标的最低严重性。 为什么有两种setLevel()
方法?在记录器中设置的级别确定它将传递给其处理程序的消息的严重性。每个处理程序中设置的级别决定了处理程序将继续发送哪些消息。