为什么记录器在配置后消失了?

时间:2019-12-26 00:54:26

标签: python logging python-logging

使用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

1 个答案:

答案 0 :(得分:0)

找到了。

事实证明,我们需要在字典中添加disable_existing_loggers: False,就像这样

config_string = """
version: 1
disable_existing_loggers: False
loggers:
  logger2:
      level: ERROR
"""

这可以解决问题