【发布时间】:2019-11-14 12:08:33
【问题描述】:
从1.8 版本升级到Django 2.2 后,我的应用开始收到重复的错误消息。每个错误,无论是什么类型,现在都会发送到我的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,
},
}
}
更新
我能够在我的本地服务器上复制它,并注意到当我在 loggers 设置中将 'propagate': True, 更改为 False 时,双重电子邮件停止了。来自docs:
可以在每个记录器的基础上控制这种传播。如果您不希望特定记录器传播到其父级,则可以关闭此行为。
但是,我仍然不确定我的最佳解决方案应该是什么。我担心设置传播到False 不会解决根本原因。
【问题讨论】:
-
你有 LOGGING_CONFIG = None 吗?如果没有,那么您可能正在传播到禁用的根记录器,并收到第二封电子邮件。
-
完美!我在设置顶部添加了
LOGGING_CONFIG = None和import logging.config,在自定义日志配置后添加了logging.config.dictConfig(LOGGING),现在不再收到重复的消息。如果您创建一个答案,我会接受 - 否则,我会写一个。
标签: python django python-3.x error-handling