使用 disable_existing_loggers = false 的日志记录配置

Posted

技术标签:

【中文标题】使用 disable_existing_loggers = false 的日志记录配置【英文标题】:Logging configuration with disable_existing_loggers = false 【发布时间】:2022-01-17 17:48:42 【问题描述】:

Python 日志记录教程暗示 disable_existing_loggers 应该是正确的,但我在配置时遇到了问题。我认为正在发生的事情是__main__ 模块导入了应用程序的各个部分,这些应用程序在配置日志系统之前设置了记录器(在导入期间)。这些记录器在配置时被禁用并且不会产生预期的输出。

我有数百个遗留源代码文件和十几个__main__ 模块入口点。删除所有设置单个记录器的***调用似乎是一个困难的猫群问题。重新工作每个 __main__ 模块可能是可能的,但简单地将 disable_existing_loggers 翻转为假(在 .json 中)要容易得多并且似乎有效。我认为没有人对记录器做任何非常棘手的事情,而且我没有看到补丁测试有限的问题。

这种方法的后果和陷阱是什么?需要做什么才能使其成为可靠的解决方案?

【问题讨论】:

【参考方案1】:

我不认为文档暗示它应该True - 他们只是声明默认值是True 以实现向后兼容性,即为了不破坏现有(旧) 代码。将False 传递给disable_existing_loggers 很好,很多人都这样做。当然,请确保您确实希望现有的记录器保持启用状态。

【讨论】:

好的,谢谢。我们将尝试更改它,因为我们知道它有助于我们的某些代码。

以上是关于使用 disable_existing_loggers = false 的日志记录配置的主要内容,如果未能解决你的问题,请参考以下文章

django 使用logging记录日志

django logger(工作中使用)

Django 记录请求

在Django中使用logging模块

Django日志配置代码

Django日志配置代码