Python 日志记录根处理程序未捕获所有日志记录

标签 python logging configuration

我遇到了一个根记录器的问题,我希望它能够作为一个包罗万象的记录器来处理与其他地方不匹配的任何内容。然而它并没有像我预期的那样工作。这是我使用的简化日志配置:

[loggers]
keys = root, specific

[handlers]
keys = syslog

[formatters]
keys = default

[logger_root]
level = WARNING
handlers = syslog

[logger_specific]
level = DEBUG
handlers = syslog
qualname = specific

[handler_syslog]
class = handlers.SysLogHandler
args = (('localhost',514), handlers.SysLogHandler.LOG_LOCAL0)
formatter = default

[formatter_default]
format = %(message)s

现在,当我从名为 special.something.else 的模块记录任何内容时,它都会被正确记录。如果我从 different.module 登录,我根本看不到该行。我可以添加更多“特定”记录器,它们可以很好地捕获附加消息......但是如何使根记录器成为“包罗万象”的记录器呢?我的印象是它应该默认扮演这个角色。

最佳答案

这可能是因为您的 different.module 记录器是在 fileConfig 调用之前创建的,这会导致这些记录器在调用中被禁用。

您需要确保使用 disable_existing_loggers=False 调用 fileConfig,并运行 Python 2.6 或更高版本,以便可以使用此关键字参数。如果您做不到这一点,则需要避免创建任何记录器(除了配置中已命名的记录器或其祖先已命名的记录器),直到之后 fileConfig 已被调用。

另请参阅this answer .

关于Python 日志记录根处理程序未捕获所有日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231650/

相关文章:

python - 如何在Python中group by后减去行?

python - 如何使用 python 请求(获取)和读取 xml 文件?

python - 如何停止从打印到 stderr 的 Django 单元测试记录?

java - <context :annotation-config> and <context:component-scan> 之间的区别

python - 编写一个函数来添加键值对

java - Log4j 没有将日志写入文件

java - 我应该使用哪个API来登录java

ssl - HTTP2 不适用于 Nginx 1.10.1、Openssl 1.2.h 和 Chrome 51.0.2704.103

java - Hazelcast 内存不足问题

python - 使用 python 在音频中查找语速和语调