带有FileHandler的python root logger不会记录

时间:2014-04-01 16:14:37

标签: python logging

我希望所有记录器,尤其是来自外部库的记录器,都能登录到同一个文件。为实现这一点,我正在创建FileHandler

filename = ...
mode = ...
level = ...
fmt = ...

handler = logging.FileHandler(filename=filename, mode=mode)
handler.setFormatter(logging.Formatter(fmt))
handler.setLevel(level)

logger = logging.getLogger()
logger.setLevel(level)
logger.addHandler(handler)

我已经读过同一进程中的所有记录器都从root logger“继承”了,所以所有这些记录器都应该登录到同一个文件中。我在两台机器上测试过它,一台用python 2.7,另一台用2.6。

在第一个上它按预期工作,但在另一个上,日志文件存在但是为空。似乎处理程序已正确注册,但日志在某处丢失。

我不知道为什么。你有什么建议吗?

提前致谢,

的Grzegorz

修改

提供更全面的背景:我有一些不时在不同进程中执行任务的跑步者。跑步者有自己的记录器。对于在单独进程中执行的每个任务,第一步是设置如上所述的根记录器。

1 个答案:

答案 0 :(得分:0)

Python2.6和Python2.7之间存在细微差别。 2.6中的方法setLevel接受logging.DEBUG等常量,而2.7接受logging.DEBUG常量和字符串"DEBUG"

相关问题