【问题标题】:Django unnamed default logger is overridden by imported packageDjango 未命名的默认记录器被导入的包覆盖
【发布时间】:2022-10-12 21:41:48
【问题描述】:

在我的 django 应用程序中,我定义了日志记录配置:

default_config = {
            'handlers': handlers_to_use,
            'level': 'WARN',
        }

LOGGING: Dict[str, Any] = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': handler_configs,
    'root': default_config,
    'loggers': {
        '': default_config
    }
}

所以你可以看到我正在使用未命名的记录器''和根记录器,这应该将默认日志记录级别设置为 WARN。但是,有一些包(factory_boy 和 PIL)给了我 DEBUG 日志,这没有意义,因为 WARN 应该只给我 ERROR 和 WARN 日志,基于层次结构。

他们如何覆盖默认值?如果我将工厂和 PIL 添加到记录器列表中,一切正常,但我想知道为什么未命名或根记录器没有捕获调试日志

任何帮助将不胜感激

【问题讨论】:

    标签: django logging default root


    【解决方案1】:

    由于这一行,您仍然可以获得在其他地方定义的记录器:

    'disable_existing_loggers': False
    

    factory_boy 和 PIL 等其他软件包不会覆盖默认值。你只是没有覆盖它们。

    如果您禁用现有的记录器,则由您自己定义所有内容。您只会获得配置中配置的任何内容。

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 2012-03-15
      相关资源
      最近更新 更多