自从我将网站升级到 Django 2.1 后,不再发送包含 500 信息的错误电子邮件。
无论如何我都没有更改设置。
它们看起来像这样(摘自 diffsettings)
SERVER_EMAIL = 'bla@example.com'
### LOGGING = {}
### LOGGING_CONFIG = 'logging.config.dictConfig'
ADMINS = [('Admin', 'admin@example.com')]
### DEBUG = False
如您所见,我有默认的日志记录配置,并且调试设置为 false。 我还测试了我的电子邮件设置,当我手动发送电子邮件时(服务器电子邮件地址作为发件人,管理员电子邮件地址作为收件人,一切正常。 我没有发现这是 Django 2.1 中的已知错误
请您参考如下方法:
我根据这个 gist 向 Google Chat 发送消息.自升级到 Django 2.1 以来,即使配置保持不变(很像您的情况),它也停止工作。虽然我不完全确定发生了什么,但我发现如果我将服务器的 DEBUG 更改为 True 并将我的“chat_admins”日志处理程序上的过滤器更改为“require_debug_true”,它将再次工作。当然,这并不理想,因为它在生产环境中,DEBUG 为“False”,我需要它才能工作。
我最终在 settings.py 中重写了我的 LOGGING 变量,试图获得最小配置并遵循 Django Logging 的文档.它现在正在生产环境中使用 DEBUG 设置为“True”。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[{server_time}] {message}',
'style': '{',
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'django.server',
},
'chat_admins': {
'level': 'DEBUG',
'filters': ['require_debug_false'],
'class': 'myapp.chat_logger.ChatExceptionHandler',
},
},
'loggers': {
'django': {
'handlers': ['console', 'chat_admins'],
'level': 'INFO',
'propagate': True,
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
},
}
原始设置和我重写的设置之间只有两个主要区别:1) 'mail_admins' 处理程序消失了 2) django 记录器中的 'propagate' 现在设置为 'True'。我也尝试将这些设置手动应用到先前的配置,但它仍然不起作用。
