如果我们的Django Web应用程序返回404,我们会在日志中看到:
2017-11-21 12:48:26 django.request.get_response: WARNING Not Found: /foooooo
我想将get_response()创建的这一特定行从WARN更改为INFO。
如何使用Django和Python进行配置?
另一种解决方案是忽略此行,但首选WARN到INFO。
答案 0 :(得分:10)
你不能轻易做到这一点,因为Django开发人员已经确定这个特定事件非常重要,可以被归类为WARNING
。
但是,可以在写入日志时将其转换为INFO
,方法是添加logging.Filter
子类的实例,以更改{{1}中的级别从LogRecord
到WARNING
,或完全过滤掉该消息。
应该将过滤器添加到应以这种方式更改其输出的任何处理程序。这可以使用标准的Django日志记录配置机制来完成。
答案 1 :(得分:4)
首先创建记录器过滤器
def change_404_level_to_INFO(record):
if record.status_code == 404:
record.levelname = 'INFO'
return True
之后在LOGGING
中添加此过滤器并在记录器上设置过滤器
LOGGING = {
....
'filters': {
'change_404_to_INFO': {
'()': 'django.utils.log.CallbackFilter',
'callback': change_404_to_INFO`,
},
},
....
'loggers': {
'django.request': {
'handlers': ['console',],
'level': 'DEBUG',
'propagate: False,
'filters': ['change_404_to_INFO'],
},
}
....
}