如何访问config中定义的处理程序?

时间:2014-09-24 06:39:15

标签: python logging

我有以下日志记录配置:

logging.config.dictConfig({
    'version': 1,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'summary_verbose': {
            'level': 0,
            'class': 'logging.FileHandler',
            'filename': 'summary_debug.log',
        },
    },
    'loggers': {

        'myapp': {
            'handlers': ['console'],
            'level': 'WARNING',
        },
    }
})

有一个未使用的处理程序' summary_verbose',我想将它用于我稍后创建的记录器(我不想在我的应用程序代码中配置整个处理程序和格式化程序,我想要大多数配置它一次接近日志初始化。以后有没有办法使用这个处理程序? 即我怎么能写下面的代码呢?

log_core = logging.getLogger('myapp.some_routine')
log_core.addHandler('summary_verbose')

1 个答案:

答案 0 :(得分:1)

这是解决方案(在python 2.7上测试):

import logging

summary_verbose_handler = logging.config.logging._handlers['summary_verbose']

log_core = logging.getLogger('myapp.some_routine')
log_core.addHandler(summary_verbose_handler)

但是,这种行动不是最佳做法。 如果您需要按某种条件启动处理程序,那么您最好实现一些filter logic

以下是简单过滤器的示例:https://github.com/django/django/blob/stable/1.7.x/django/utils/log.py#L160