在python日志记录中使用dictConfig,需要创建一个不同于在dict中定义的文件的记录器.

我有一个LOG_SETTINGS dict,如下所示:

LOG_SETTINGS = {
'version': 1,'handlers': {
    'console': {
        'class': 'logging.StreamHandler','level': 'INFO','formatter': 'detailed','stream': 'ext://sys.stdout',},'file': {
        'class': 'logging.handlers.RotatingFileHandler','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))

但输出仍然写入LOG_SETTINGS中定义的原始日志文件.我正在寻找的是有能力说:logger2.replaceHandler(logfile)而不是addHandler.

有没有办法做到这一点?

解决方法

首先,清空记录器处理程序logger.handlers = []然后添加另一个处理程序.

logger2 = logging.getLogger('extensive')
logfile = logging.FileHandler("test.log")
logger2.handlers = []
logger2.addHandler(logfile)

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。