我在Django设置中有以下日志记录配置。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format':
'%(levelname)s|%(asctime)s|%(name)s>> %(message)s',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
}
},
'loggers': {
'': {
'handlers': ['console'],
'level': 'ERROR',
'propagate': True,
},
'apps': {
'handlers': ['console'],
'level': 'DEBUG',
},
}
}
通过这种配置,我希望我的'apps'能够以DEBUG级别登录,而任何其他模块只能记录ERROR及以上级别。但我看到来自其他模块的DEBUG消息。我该如何解决?
答案 0 :(得分:7)
您是否在LOGGING['loggers']
中使用空字符串键来匹配根记录器?如果是这样,你可以试试这个。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format':
'%(levelname)s|%(asctime)s|%(name)s>> %(message)s',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
}
},
'loggers': {
'apps': {
'handlers': ['console'],
'level': 'DEBUG',
}
},
'root': {
'handlers': ['console'],
'level': 'ERROR'
}
}
答案 1 :(得分:0)
我遇到了类似的问题,root logger在viewMore(state, status) {
console.log('viewMore')
const current = state.visibility.statuses[status]
state.visibility.statuses[status] = current + 5
state.visibility = JSON.parse(JSON.stringify(state.visibility))
}
上配置了一个级别,但是看到了DEBUG日志消息。
结果是,我不应该为INFO
级别的其他记录器设置'propagate': True
,因为无论这些记录处于哪个级别,这些日志都将传递到根记录器。
因此,我对原始问题的猜测是,可能存在其他一些打开了DEBUG
的模块的记录器。将propagate
设置为disable_existing_loggers
也许可以解决这个问题。