在python日志记录中使用dictConfig,需要使用与dict中定义的文件不同的文件创建记录器。
我有一个日志设置命令,看起来像:在python日志记录中使用dictConfig,需要使用与dict中定义的文件不同的文件创建记录器。,python,logging,Python,Logging,我有一个日志设置命令,看起来像: LOG_SETTINGS = { 'version': 1, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'level': 'INFO', 'formatter': 'detailed', 'stream': 'ext://sys.stdout', }, 'file': { 'cla
LOG_SETTINGS = {
'version': 1,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'INFO',
'formatter': 'detailed',
'stream': 'ext://sys.stdout',
},
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'INFO',
'formatter': 'detailed',
'filename': '/tmp/junk.log',
'mode': 'a',
'maxBytes': 10485760,
'backupCount': 5,
},
},
'formatters': {
'detailed': {
'format': '%(asctime)s %(module)-17s line:%(lineno)-4d ' \
'%(levelname)-8s %(message)s',
},
'email': {
'format': 'Timestamp: %(asctime)s\nModule: %(module)s\n' \
'Line: %(lineno)d\nMessage: %(message)s',
},
},
'loggers': {
'extensive': {
'level':'DEBUG',
'handlers': ['file',]
},
}
}
在我的代码中,我执行以下操作:
logging.config.dictConfig(LOG_SETTINGS)
logger = logging.getLogger('extensive')
logger.info("This is from Runner {0}".format(self.default_name))
logger2 = logging.getLogger('extensive')
logfile = logging.FileHandler("test.log")
logger2.addHandler(logfile)
logger2.info("This is from Runner {0} to the new file.".format(self.default_name))
但输出仍然写入在日志设置中定义的原始日志文件。我想要的是能够说:logger2.replaceHandler(logfile),而不是addHandler
有没有办法做到这一点?首先,清空记录器处理程序
logger.handlers=[]
然后添加另一个处理程序
logger2 = logging.getLogger('extensive')
logfile = logging.FileHandler("test.log")
logger2.handlers = []
logger2.addHandler(logfile)
非常感谢。我发现的另一个东西是
removeHandler
,但我不确定“hdlr”是什么。对于处理程序
,它是一个日志处理程序对象。