2013-03-22 2 views
8

Ich habe eine Website in Django gebaut.Einschließlich lokaler Variablen in Django Fehler E-Mails

Wenn auf der Produktionsstätte ein Fehler auftritt, sendet Django automatisch eine Stapelüberwachung an die E-Mail-Adressen, die in der Liste ADMINS in settings.py aufgeführt sind.

Ich möchte, dass diese Stack-Trace lokale Variablen für jeden Stapelrahmen enthalten (wie die Standard-Stack-Trace tut, wenn die Website im Debug-Modus ist).

Irgendwelche Ideen?

Danke!

Antwort

9

Es ist wirklich einfach, dies einzurichten. Setzen Sie einfach 'include_html': True in die Protokollierungskonfiguration des jeweiligen Handlers, der Fehler-E-Mails für Sie sendet.

Zum Beispiel (dies ist die Standard-Protokollhandler abgesehen von der „include_html“ Linie):

'handlers': { 
    'mail_admins': { 
     'level': 'ERROR', 
     'filters': ['require_debug_false',], 
     'class': 'django.utils.log.AdminEmailHandler', 
     'include_html': True 
    } 
} 

Dieses eine HTML-Anhang in der Fehler E-Mail mit dem Inhalt der Fehlerseite enthält, die Sie erhalten, wenn DEBUG = Wahr. Die Django docs haben ein paar weitere Details und einen Hinweis zur Sicherheit.

Sie könnten auch einen Logging-Handler einrichten, der Unterklassen von django.utils.log.AdminEmailHandler und django.views.debug.ExceptionReporter verwendet, wenn Sie die Dinge viel mehr anpassen müssen.

+0

Gibt es eine Möglichkeit, Djangos Standard-Logging-Konfiguration zu erhalten und nur die Bits zu überschreiben, die ich in meiner settings.py brauche? Dies funktioniert nicht, aber zeigt, was ich meine: 'von django.conf.settings importieren LOGGING LOGGING ['Handler'] ['mail_admins'] ['include_html'] = True' –

+0

Got it. Es ist: 'von django.utils.log Import DEFAULT_LOGGING als LOGGING LOGGING ['Handler'] ['mail_admins'] ['include_html'] = True' –