【发布时间】:2013-11-27 10:27:28
【问题描述】:
我想使用 ContextFiltering 将用户定义的变量添加到记录器格式。我的代码如下:
import logging
import logging.handlers
CMDID='TEST'
class ContextFilter(logging.Filter):
def filter(self,record):
record.CMDID=CMDID
return True
FORMAT='%(asctime)s [%(CMDID)s] - %(message)s'
logger=logging.getLogger("Test")
fh=logger.handlers.RotatingFileHandler("testing.log",maxBytes=1024,backupCount=5)
fh.setlevel(logging.DEBUG)
fh.setFormatter(logging.Formatter(FORMAT))
logger.addHandler(fh)
logger.addFilter(ContextFilter())
logger.warning("WTH")
当我不使用文件处理程序而只使用 basicConfig 进行格式化时,代码可以正常工作。但是在添加旋转文件处理程序时出现错误
Traceback (most recent call last):
Line 16, in <module>
fh=logger.handlers.RotatingFileHandler("testing.log",maxBytes=1024,backupCount=5)
AttributeError: 'list' object has no attribute 'RotatingFileHandler'
现在我也尝试过为此使用 LoggerAdapters 类,但它也会引发奇怪的错误,在进一步调查后我发现它的文档可能存在一些问题。
谁能帮助我解决这个问题,并建议我使用这个 FileHandler 在我的记录器中有效地添加上下文用户定义的信息。
附:我已经尝试过python doc中给出的方法没有用
【问题讨论】: