【发布时间】:2011-01-28 17:38:00
【问题描述】:
当我在 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 instance has no attribute 'level'。所以我添加了一行
rfh.setLevel(logging.DEBUG)
在调用addHandler 之前,最后一行抛出AttributeError: RotatingFileHandler instance has no attribute 'filters'。因此,如果我手动将过滤器设置为空列表,则它会抱怨没有属性lock 等。
当我删除delay=True 以将其保留为False as documented here 的默认值时,问题就完全消失了。
我错过了什么吗?如何正确使用RotatingFileHandler类的delay参数?
编辑:经过进一步分析(在下面我自己的答案中提出),这看起来像一个错误,但我在 Python bug tracker 中找不到关于此的错误报告,即使尝试不同搜索词,所以我想我会报告它。
但是,如果有人可以找到实际的错误报告,那么我可以避免提交重复报告并浪费 Python 开发人员的时间。我将推迟几个小时报告错误,如果有人发布包含当前错误报告的答案,那么我会接受这个问题的答案。
【问题讨论】:
-
回复您对我的回答的评论:错误报告没有提及您的确切问题是对的,但我对它的评论 (bugs.python.org/msg80293) 表明修复程序正确打开了流设置了延迟。不是很清楚,我同意:-)