如何在Django日志配置中排除404错误的邮件通知?
解决Django日志中404错误邮件通知过多的问题
要过滤掉爬虫、垃圾请求导致的404错误邮件,你可以直接利用Django内置的Ignore404过滤器修改日志配置,具体调整如下:
1. 添加忽略404的过滤器
在原有filters配置块中,新增一个专门过滤404错误的规则:
'ignore_404': { '()': 'django.utils.log.Ignore404', }
2. 给邮件处理器绑定该过滤器
修改mail_admins处理器的filters列表,把新增的ignore_404加入其中,这样404相关的日志就不会触发邮件通知了:
'mail_admins': { 'level': 'WARNING', 'filters': ['require_debug_false', 'ignore_404'], 'class': 'django.utils.log.AdminEmailHandler', 'include_html': True, },
修改后的完整日志配置
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' }, # 新增忽略404的过滤器 'ignore_404': { '()': 'django.utils.log.Ignore404', } }, 'formatters': { 'verbose': { 'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}', 'style': '{', }, 'simple': { 'format': '{levelname} {message}', 'style': '{', }, }, 'handlers': { 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', }, 'mail_admins': { 'level': 'WARNING', # 新增ignore_404过滤器 'filters': ['require_debug_false', 'ignore_404'], 'class': 'django.utils.log.AdminEmailHandler', 'include_html': True, }, }, 'loggers': { '': { 'handlers': ['console', 'mail_admins'], 'level': 'DEBUG', 'propagate': False, }, } }
调整完成后,只有非404的WARNING及以上级别错误(比如服务器内部错误、权限问题等)会触发邮件通知,爬虫导致的404日志会被自动过滤,不会再发送冗余邮件。
内容的提问来源于stack exchange,提问作者maksam07
相关产品推荐
相关产品推荐

