当我在Python 2.6下运行以下代码时
import logging
from logging.handlers import RotatingFileHandler
rfh = RotatingFileHandler("testing.log", delay=True)
logging.getLogger().addHandler(rfh)
logging.warning("Boo!")
然后最后一行抛出AttributeError:RotatingFileHandler实例没有属性“级别”.所以我加线
rfh.setLevel(logging.DEBUG)
在对addHandler的调用之前,然后最后一行引发AttributeError:RotatingFileHandler实例没有属性“过滤器”.因此,如果我手动将过滤器设置为空列表,那么它将抱怨没有属性锁定等.
当我删除delay = True将其保留为默认值False as documented here时,问题完全消失了.
我想念什么吗?如何正确使用RotatingFileHandler类的delay参数?
编辑:经过进一步分析(在下面我自己的答案中提出),这看起来像个错误,但是即使在尝试不同的搜索字词时,我也无法在Python bug tracker中找到此错误的报告,所以我想我将进行报告.
但是,如果有人可以找到实际的错误报告,那么我可以避免提交重复的报告并浪费Python开发人员的时间.我将延迟几个小时报告该错误,如果有人发布了包含当前错误报告的答案,那么我将接受该问题的答案.
解决方法:
我已经研究了此问题:此问题已在2009年1月20日的Python SVN r68829中修复.此问题在2.6.1发行之后但在2.6.2发行之前.
请升级到Python 2.6.2或更高版本.
我更新了the bug you filed.顺便说一句,提交的原始错误报告是#5013,可以通过搜索RotatingFileHandler的所有问题(不仅仅是打开的问题)来查找,例如this(来自this page).