1

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

[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

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

4

1 回答 1

1

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

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

另请参阅此答案

于 2013-10-07T22:24:06.160 回答