【问题标题】:Basic logging dictConfig in PythonPython中的基本日志记录dictConfig
【发布时间】:2016-08-15 13:31:58
【问题描述】:

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

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

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

以下 sn-p 缺少什么?行为是创建了日志文件,但没有输出。 (我尝试了各种设置级别的组合,但似乎没有帮助)

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()

【问题讨论】:

标签: python logging


【解决方案1】:

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

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

loggers - 对应的值将是 ...

...

root - 这将是根记录器的配置。 ...

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

【讨论】:

    【解决方案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")
    

    确实,它基于上面提到的答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多