Python日志记录:将"WARN"更改为"INFO"

gue*_*tli 7 python django logging

如果我们的Django Web应用程序返回404,我们会在日志中看到:

2017-11-21 12:48:26 django.request.get_response: WARNING Not Found: /foooooo
Run Code Online (Sandbox Code Playgroud)

我想将get_response()创建的这一特定行从WARN更改为INFO.

如何使用Django和Python进行配置?

另一种解决方案是忽略此行,但首选WARN到INFO.

Vin*_*jip 9

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

但是,你可以将其转换为INFO写日志的时候,通过增加的实例logging.Filter,其改变了水平子LogRecordWARNINGINFO,或者完全过滤掉的消息.

应将过滤器添加到应以这种方式更改其输出的任何处理程序.这可以使用标准的Django日志记录配置机制来完成.


chi*_*kiy 4

首先创建记录器过滤器

def change_404_level_to_INFO(record):
    if record.status_code == 404:
        record.levelname = 'INFO'
    return True
Run Code Online (Sandbox Code Playgroud)

之后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'],
        },
    }
....
}
Run Code Online (Sandbox Code Playgroud)