2013-11-28 9 views
7

Ich möchte einen Sentry-Logger für ein Django-Projekt einrichten. Ich werde einen sentry Handler definieren und diesen Handler in den Root Logger mit error Ebene setzen.Root-Logger in dictconfig

Gemäß der Dokumentation von logging Modul gibt es ein speziellen root Schlüssel:

root - dies wird die Konfiguration für den Root-Logger sein. Die Verarbeitung der Konfiguration erfolgt wie bei jedem Logger, außer dass die propagate Einstellung nicht anwendbar ist.

Zur gleichen Zeit in other Orte ein Logger mit Namen '' enthalten Konfiguration für den Root-Logger verwendet.

Hat dies den gleichen Effekt? Was ist vorzuziehen?

Antwort

6

Jeder Weg wird funktionieren, weil der Logger namens '' der Root-Logger ist. Die Angabe root macht es klarer, was Sie tun, wenn Sie viele Logger konfigurieren - die Logger-Konfiguration könnte innerhalb einer Gruppe von anderen verloren gehen, während der Schlüssel root neben dem Schlüssel loggers und so (in der Theorie) sollte mehr auffallen.

+1

Dies scheint * nicht * korrekt zu sein, wenn Sie Ihre Protokollierungskonfiguration mit dem Attribut [settings.LOGGING] (https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging) definieren Django 1.7! Ich logge mich auf einen benannten Logger in meinem Sichten-Modul ein und der Log-Record wird erfasst, wenn ich einen Logger namens '' '' in meinem 'LOGGING' definiert habe, aber * nicht *, wenn ich ihn' 'root'' nenne. Leider gibt die Django-Dokumentation keine Aussage darüber, wie mit dem Root-Logger überhaupt umgegangen werden soll. –

+4

@hheimbuerrer Es heißt nicht im Logger-Dict root, es ist parallel zu den Loggern dict. Weitere Informationen finden Sie unter https://docs.python.org/2/library/logging.config.html#dictionary-schema-details. –

Verwandte Themen