Python日志记录:更改"警告"到" INFO"

时间:2017-11-21 12:01:55

标签: python django logging

如果我们的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。

2 个答案:

答案 0 :(得分:10)

你不能轻易做到这一点,因为Django开发人员已经确定这个特定事件非常重要,可以被归类为WARNING

但是,可以在写入日志时将其转换为INFO,方法是添加logging.Filter子类的实例,以更改{{1}中的级别从LogRecordWARNING,或完全过滤掉该消息。

应该将过滤器添加到应以这种方式更改其输出的任何处理程序。这可以使用标准的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'],
        },
    }
....
}