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に基づいてカスタムのメール ハンドラーを作成することを検討してください。この新機能の実際の実装は非常に簡単でクリーンなので、難しいことではありません(プルリクエストを参照)。

AdminEmailHandlerまたは、実際に django 1.6 からクラス全体を抽出し、それをカスタム メール ハンドラーとして使用することもできます。

于 2013-09-25T10:06:53.623 に答える