2010-04-10 15 views

Odpowiedz

43

Po prostu używasz metod logging module, a DjDT przechwytuje i wyświetla je w panelu rejestrowania.

import logging 

logging.debug('Debug Message') 

if some_error: 
    logging.error('Error Message') 
8

Zapisywanie bezpośrednio do głównego rejestratora, jak wspomniano powyżej @ jonwd7, zazwyczaj nie jest zalecane. Generalnie podążam za tym wzorcem:

import logging 
logger = logging.getLogger(__name__) 
del logging # To prevent accidentally using it 

... 

logger.debug("Some message") 

Pozwala to na znacznie dokładniejszą kontrolę nad tym, które komunikaty rejestrowania nie są wyświetlane. Niestety, użycie go w ten sposób powoduje zatrzymanie paska narzędzi debugowania django przed przechwytywaniem komunikatów dziennika, chyba że określono konkretną konfigurację rejestrowania. Oto najprostsza mogę wymyślić:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'incremental': True, 
    'root': { 
     'level': 'DEBUG', 
    }, 
} 

Ustawienie „pierwotne” i „disable_existing_loggers” są zarówno ważne, więc nie jesteś wyłączenie obsługi paska narzędzi dołączone do rejestratora głównego. Wszystko, co chcesz zrobić, to ustawić log programu głównego jako "DEBUG". Możesz także użyć wpisu "rejestratory", aby ustawić poziomy dla określonych rejestratorów. Po prostu pomiń sekcję "Handlers" i ustaw "propaguj": Prawda, więc przechwytuje je handler DjDT.

+1

Dziękuję za szczegółowe informacje w dzienniku głównym. To informacja, której brakuje w innych odpowiedziach. – jnns

+1

część ustawienia pomógł mi, dzięki! Nadal dobra rada w 2016 roku – Jeff

0

Jeśli masz już konfiguracyjny DYSK LOGOWANIA, a nie chcesz go zepsuć, przełączając się na "przyrostowy", musisz ponownie dodać dziennik DjDT jako program obsługi, a następnie dodać go do lista programów obsługi root logger.

from debug_toolbar.panels.logging import collector # needed for handler constructor below 
LOGGING = { 
    # existing options, formatters, loggers, etc 
    handlers = { 
     # existing handlers 
     'djdt_log': { 
      'level': 'DEBUG', 
      'class': 'debug_toolbar.panels.logging.ThreadTrackingHandler', 
      'collector': collector, 
     }, 
    }, 
    'root': { 
     'level': 'DEBUG', 
     'handlers': ['djdt_log'], 
    }, 
} 

Jeśli jest to czystszy sposób, chciałbym to zobaczyć.

Powiązane problemy