2011-08-08 18 views
9

W moim projekcie django Mam następujący LOGGING config:Python/Django poziom korzeń rejestrator

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'verbose': { 
      'format': '%(name)s %(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'null': { 
      'level': 'DEBUG', 
      'class':'django.utils.log.NullHandler', 
     }, 
     'sentry': { 
      'level': 'DEBUG', 
      'class': 'sentry.client.handlers.SentryHandler', 
      'formatter': 'verbose' 
     }, 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'formatter': 'verbose' 
     } 
    }, 
    'loggers': { 
     'django.db.backends': { 
      'handlers': ['console'], 
      'level': 'INFO', 
      'propagate': False, 
     }, 
     '': { 
      'level': 'ERROR', 
      'handlers': ['console'], 
     }, 
    }, 
} 

Uruchamiając manage.py migrate mam jeszcze dużo debugowania rzeczy w konsoli, np:

DEBUG south 2011-08-08 11:22:23,847 generic 19539 140735078710464 south execute "..." 

I "oczekuję tylko komunikatów o błędach w konsoli, ponieważ ustawiam poziom logu root na ERROR. Co ja robię źle?

UPDATE

Wygląda na to, problem jest w module south.logger:

import sys 
import logging 
from django.conf import settings 

# Create a dummy handler to use for now. 
class NullHandler(logging.Handler): 
    def emit(self, record): 
     pass 

_logger = logging.getLogger("south") 
_logger.addHandler(NullHandler()) 
_logger.setLevel(logging.DEBUG) 

Po usunięciu _logger.setLevel(logging.DEBUG) rejestrowanie działa zgodnie z oczekiwaniami.

Czy ktoś może mi wyjaśnić takie dziwne zachowanie?

+0

+1 więc inni twórcy bibliotek mogą dowiedzieć się, co * nie robić * – SingleNegationElimination

Odpowiedz

12

Deweloperzy z Południa nie powinni ustawiać poziomu rejestratora najwyższego poziomu na DEBUG. W rzeczywistości, jeśli nie ustawią go wcale, odziedziczyłby on poziom logarytmu root'a, który jest zwykle definiowany przez programistę aplikacji (w tym przypadku, jak sądzę, jest to ty).

Proponuję zgłosić to jako błąd na odpowiednim południowym forum.

Powiązane problemy