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

时间:2013-10-07 18:08:47

标签: 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

现在,当我从名为specific.something.else的模块中记录任何内容时,它会被正确记录。如果我从different.module登录,我根本就没有这条线。我可以添加更多的“特定”记录器,它们可以很好地捕获其他消息......但是如何使根记录器成为“全能”记录器呢?我的印象是它默认应该扮演这个角色。

1 个答案:

答案 0 :(得分:1)

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

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

另见this answer