2011-08-08 10 views
9

En mi proyecto Django He config siguientes registros:Python/Django nivel registrador raíz

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'], 
     }, 
    }, 
} 

Cuando se ejecuta manage.py migrate todavía tienen un montón de cosas de depuración en la consola, por ejemplo:

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

I Estoy esperando solo mensajes de error en la consola cuando configuro el nivel del registrador de raíz a ERROR. ¿Qué estoy haciendo mal?

ACTUALIZACIÓN

Parece que es un problema en south.logger módulo:

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) 

Después de retirar funciona _logger.setLevel(logging.DEBUG) registro como se esperaba.

¿Puede alguien explicarme un comportamiento tan extraño?

+0

+1 para que otros desarrolladores de bibliotecas puedan aprender qué * no hacer * – SingleNegationElimination

Respuesta

12

Los desarrolladores del Sur no deberían realmente establecer su nivel de registrador de nivel superior en DEPURAR. De hecho, si no lo configuran en absoluto, heredaría el nivel del registrador de raíz, que normalmente es definido por el desarrollador de la aplicación (que supongo que es usted, en este caso).

Le sugiero que lo informe como un error en el foro del Sur correspondiente.

Cuestiones relacionadas