自从我将网站升级到Django 2.1以来,不再发送包含500条信息的错误电子邮件。
我仍然没有更改设置。
它们看起来像这样(摘自差异设置)
SERVER_EMAIL = 'bla@example.com'
### LOGGING = {}
### LOGGING_CONFIG = 'logging.config.dictConfig'
ADMINS = [('Admin', 'admin@example.com')]
### DEBUG = False
如您所见,我具有默认的日志记录配置,并且debug设置为false。 我还测试了我的电子邮件设置,当我手动发送电子邮件时(服务器电子邮件地址作为发送者,管理员电子邮件地址作为接收者,一切正常。 我没有发现这是Django 2.1中的一个已知错误
答案 0 :(得分:1)
我根据此gist向Google聊天发送消息。自从升级到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”。我也尝试将这些设置手动应用于先前的配置,但仍然无法正常工作。