Python中的基本记录字典配置

2024-06-06 07:36:43 发布

您现在位置:Python中文网/ 问答频道 /正文

注意我知道this answer但这对我不起作用,我希望有一个完整的、独立的工作示例。在

我试图在Python(2.7)中将logging.basicConfig替换为dictConfig

我的理解是basicConfig只是设置根记录器:所以我试图用dictConfig来做同样的事情。也就是说,用处理程序设置根记录器,然后应用程序中的所有记录器都将向上传播根记录器。在

下面的片段缺少什么?其行为是创建日志文件,但没有输出生成它。(我尝试过各种设置级别的组合,但似乎没有帮助)

import logging
log_dict = {
    'loggers': {
        'root': {
            'handlers': ['file_handler']
        }
    },
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file_handler': {
            'filename': 'c:/mylogfile.log',
            'class': 'logging.FileHandler'
        }
    }
}

logging.config.dictConfig(log_dict)
logging.info('THIS IS A TEST')
logging.shutdown()
exit()

Tags: answerlog示例logginghandlersthisloggers中将
2条回答

以下代码非常适合我:

import logging
import logging.config

log_dict = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
    },
    'handlers': {
        'default': {
            'level': 'INFO',
            'formatter': 'standard',
            'class': 'logging.StreamHandler',
        },
        'file_handler': {
            'level': 'INFO',
            'filename': '/tmp/mylogfile.log',
            'class': 'logging.FileHandler',
            'formatter': 'standard'
        }
    },
    'loggers': {
        '': {
            'handlers': ['file_handler'],
            'level': 'INFO',
            'propagate': True
        },
    }
}
logging.config.dictConfig(log_dict)
logging.info("test")

事实上,这是基于上面提到的答案

您发布的配置有几个问题:

  1. 名为'root'的记录器不是根记录器。根日志记录器的名称为'',一般来说,使用'root'条目外部的'loggers'配置进行更好的配置,如日志记录文档的this部分所述:

loggers - the corresponding value will be ...

...

root - this will be the configuration for the root logger. ...

  1. 您尚未指定日志记录级别,因此它仍保留为默认级别WARNING,这意味着info()消息将不会显示。在

相关问题 更多 >