python - 为什么升级到 v2.2 后 Django 会发送重复的错误消息?
问题描述
Django 2.2
从 version升级到后1.8
,我的应用开始收到重复的错误消息。每个错误,无论类型如何,现在都会发送到我的ADMINS
电子邮件两次。
我正在运行我的应用程序Heroku
并尝试了他们的支持,但他们确定这与我的应用程序有关。我一直无法在网上或上找到类似的问题stackoverflow
。
我的日志配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
更新
我能够在我的本地服务器上复制它,并注意到当我在设置中'propagate': True,
更改为时,双重电子邮件停止了。从文档:False
loggers
这种传播可以在每个记录器的基础上进行控制。如果您不希望特定记录器传播到其父级,则可以关闭此行为。
但是,我仍然不确定我的最佳解决方案应该是什么。我担心设置传播到False
不会解决根本原因。
解决方案
感谢@gregory 将建议包含LOGGING_CONFIG = None
在我的设置中。根据文档:
这将禁用 Django 的默认日志记录的配置过程。
最终工作代码:
import logging.config
LOGGING_CONFIG = None
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
logging.config.dictConfig(LOGGING)