我有以下日志记录配置:
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')
答案 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