使用logging.config.dictConfig()
似乎删除或禁用了不在配置中的记录器。这让我感到困惑。
这是以下最小示例的问题:
为什么配置后没有显示logger1的输出? 它不仅应该传播到logger2的根记录器吗?
示例:
import logging
import logging.config
import yaml
logger1 = logging.getLogger('logger1')
logger2 = logging.getLogger('logger2')
logger1.error('logger1: this is shown 1')
logger2.error('logger2: this is shown 2')
config_string = """
version: 1
loggers:
logger2:
level: ERROR
"""
config_dict = yaml.safe_load(config_string)
logging.config.dictConfig(config_dict)
logger1.error('logger1: why is this not shown 3')
logger2.error('logger2: this is shown 4')
实际输出:
logger1: this is shown 1
logger2: this is shown 2
logger2: this is shown 4
我期望的输出:
logger1: this is shown 1
logger2: this is shown 2
logger1: why is this not shown 3
logger2: this is shown 4
答案 0 :(得分:0)
找到了。
事实证明,我们需要在字典中添加disable_existing_loggers: False
,就像这样
config_string = """
version: 1
disable_existing_loggers: False
loggers:
logger2:
level: ERROR
"""
这可以解决问题