2013-11-28 15 views
7

Desidero configurare un registratore di Sentry per un progetto Django. Definirò un gestore sentry e inserirò il gestore nel logger principale con il livello error.Registratore di root in dictconfig

Secondo la documentazione del modulo logging, c'è uno speciale root chiave:

root - questa sarà la configurazione per il logger principale. L'elaborazione della configurazione sarà come per qualsiasi registratore, tranne per il fatto che l'impostazione propagate non sarà applicabile.

Allo stesso tempo in luoghi other un logger con nome '' viene utilizzato per contenere configurazione per il logger principale.

Ha lo stesso effetto? Cosa è preferibile?

>>> import logging 
>>> logging.getLogger('') is logging.root 
True 
>>> 

risposta

6

In entrambi i casi funzionerà, perché il logger denominato "" è il logger principale. Specificare root rende più chiaro ciò che stai facendo se stai configurando molti logger: la configurazione del logger "" potrebbe essere persa all'interno di un gruppo di altri, mentre la chiave root è adiacente alla chiave loggers e così (in teoria) dovrebbe risaltare di più.

+1

Questo * non * sembra essere corretto quando si definisce la configurazione di registrazione con l'attributo [settings.LOGGING] (https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging) in Django 1.7! Mi collego ad un logger nominato nel mio modulo views e il record del log viene catturato se ho definito un logger chiamato '''' nel mio 'LOGGING', ma * non * se lo chiamo' 'root''. Sfortunatamente, la documentazione di Django non fornisce alcuna indicazione su come gestire il root logger. –

+4

@hheimbuerger Non è una radice con nome nel registro, è parallela a quella dei taglialegna. Vedi https://docs.python.org/2/library/logging.config.html#dictionary-schema-details per ulteriori informazioni. –