我想使用ContextFiltering将一个用户定义的变量添加到记录器格式。我的代码如下:Python日志记录处理程序
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")
当我不使用的FileHandler,只是使用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在我的记录器中有效地添加上下文用户定义信息的方法。
P.S.我曾尝试在Python文档中给出的方法都没用
对于错别字,感到抱歉。 非常感谢。奇迹般有效 !! –