Django - 使用不同的电子邮件后端管理错误电子邮件

时间:2013-09-25 09:54:33

标签: python django logging django-settings django-email

我在我的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使用自定义电子邮件后端?

1 个答案:

答案 0 :(得分:6)

这是可能的,但在django 1.6中,请引用documentation

  

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

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

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

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