【发布时间】:2014-01-30 11:41:26
【问题描述】:
我无法使用dictConfig() 语法在日志处理程序上安装过滤器。 LoggingErrorFilter.filter() 被忽略,没有任何反应。
我想过滤掉错误消息,这样它们就不会在日志输出中出现两次。所以我写了LoggingErrorFilter 类并覆盖了filter()。
我的配置:
class LoggingErrorFilter(logging.Filter):
def filter(self, record):
print 'filter!'
return record.levelno == logging.ERROR or record.levelno == logging.CRITICAL
config = {
'version': 1,
'disable_existing_loggers' : False,
'formatters' : {
'standard' : {
'format' : '%(asctime)s %(levelname)s %(name)s::%(message)s',
},
},
'handlers' : {
'console': {
'class' : 'logging.StreamHandler',
'level' : level,
'formatter' : 'standard',
'stream' : 'ext://sys.stdout',
},
'errorconsole': {
'class' : 'logging.StreamHandler',
'level' : 'ERROR',
'formatter' : 'standard',
'stream' : 'ext://sys.stderr',
'filters' :['errorfilter',],
},
},
'filters': {
'errorfilter': {
'class' : 'LoggingErrorFilter',
}
},
'loggers' : {
'' : {
'handlers' : ['errorconsole','console',],
'level' : level,
'propagate' : True,
},
name : {
'handlers' : ['errorconsole','console',],
'level' : level,
'propagate' : False,
},
},
}
logging.config.dictConfig(config)
我在这里做错了什么?为什么我的过滤器被忽略了?
【问题讨论】:
标签: python python-2.7 logging