7

我在我的 Django 应用程序中使用自定义电子邮件后端(在本例中为 CeleryEmailBackend):

EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'

我的日志记录配置:

LOGGING = {
    # ...
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler',
    },
    # ...
}

管理员错误电子邮件也由相同的电子邮件后端发送。
因此,如果电子邮件后端出现问题(例如 Celery 没有运行)。然后我将不会收到服务器错误电子邮件。

有没有办法AdminEmailHandler使用自定义电子邮件后端?

4

1 回答 1

7

这是可能的,但在 django 1.6 中,引用文档

通过设置 AdminEmailHandler 的 email_backend 参数,处理程序正在使用的电子邮件后端可以被覆盖,如下所示:

'handlers': {
    'mail_admins': {
        'level': 'ERROR',
        'class': 'django.utils.log.AdminEmailHandler',
        'email_backend': 'django.core.mail.backends.filebased.EmailBackend',
    }
},

如果您不想升级(例如,因为 1.6 不稳定),请考虑基于AdminEmailHandler制作自定义电子邮件处理程序。应该不难,因为这个新特性的实际实现非常简单明了(参见pull-request)。

或者,您实际上可以AdminEmailHandler从 django 1.6 中提取整个类并将其用作自定义电子邮件处理程序。

于 2013-09-25T10:06:53.623 回答