Django格式的电子邮件Django错误

时间:2018-11-30 13:18:37

标签: django

嗨,我想为django电子邮件错误创建格式,在这种情况下django会自动发送电子邮件,以获取典型的错误格式: typical error

我想在电子邮件报告中获得项目名称,所有类型错误(404/500 / etc)... 这是我的设置:

ADMINS = (
  ('Diego Avila', 'diego.loachamin@test.com'),
)
#CONFIGURAR PARAMETROS EMAIL

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL = True
EMAIL_HOST = 'mail.test.com'
EMAIL_HOST_USER = 'diego.loachamin@test.com'
EMAIL_HOST_PASSWORD = 'dsdsad'
EMAIL_PORT = 465
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

请有人提出建议或想法..谢谢.. !!

1 个答案:

答案 0 :(得分:1)

Django内置了此类功能。对于500个错误,它是一个名为AdminEmailHandler的日志记录处理程序。当有未捕获的异常时它将触发,并将回溯包括在电子邮件正文中。

404不同。这不是一个未捕获的异常,但是您可以使用BrokenLinkEmailsMiddleware拦截那些异常并发送电子邮件。

要自定义这些电子邮件的外观,您可以创建自己的AdminEmailHandlerBrokenLinkEmailsMiddleware之一或两者的子类。在settings.py中更改相关的日志记录和中间件配置,以指向您的自定义日志记录处理程序/中间件。

对于日志记录处理程序,例如,您可以使用format_subject方法将某些内容添加到外发电子邮件的主题行中。

class CustomAdminEmailHandler(AdminEmailHandler):

    def format_subject(self, subject):
        return '[ project name ]' + super().format_subject(subject) 

中间件和日志记录处理程序都使用django.core.email.mail-admins()发送电子邮件。