升级到Django 2.1之后,不再发送错误消息

时间:2018-08-23 11:09:22

标签: python django

自从我将网站升级到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中的一个已知错误

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”。我也尝试将这些设置手动应用于先前的配置,但仍然无法正常工作。

相关问题