hikaru’s diary

Django Engineer

【Django】エラーをメール通知する

【Django】500エラーをメールで通知しよう! - hikaru2323’s diary

気づいたら動かなくなってたので書き直しました。Gmailです。


settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL = True
EMAIL_PORT = 465
EMAIL_HOST_USER = os.environ.get('EMAIL_ADDRESS')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASSWORD')

LOGGING = {
    'version': 1,
    """省略"""
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
            'filters': ['custom'],  
        },
    },
    'loggers': {
        'django': {
            'handlers': ['mail_admins'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}


以上、お疲れさまでした。




追記:6月7日DEBUG=Trueでもエラー通知されてたので修正
ロギングでDEBUG=FALSEの時のみ通知させる。
docs.djangoproject.com


settings.py

LOGGING = {
    """省略"""
    'filters': {  # 追加
        "require_debug_false": {
            "()": "django.utils.log.RequireDebugFalse",
        },
        "require_debug_true": {
            "()": "django.utils.log.RequireDebugTrue",
        },
    },
    'handlers': {
        """省略"""
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
            'filters': ['custom', "require_debug_false"],  # 追加
        },
    },
}


私はファイルや日時のログを取りたくてロギングをカスタムしていますが、そもそもデフォルトでそれらを出力してほしいなあと。