Уровень корневого логгера Python / Django - PullRequest
9 голосов
/ 08 августа 2011

В моем проекте django у меня есть следующая конфигурация LOGGING:

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

При запуске manage.py migrate У меня все еще много отладочной информации в консоли, например:

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

Я ожидаю только сообщения об ошибках в консоли, поскольку я устанавливаю уровень корневого логгера в ОШИБКУ. Что я делаю не так?

UPDATE

Похоже, проблема в 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)

После удаления _logger.setLevel(logging.DEBUG) регистрация работает как положено.

Может кто-нибудь объяснить мне такое странное поведение?

1 Ответ

12 голосов
/ 11 августа 2011

Южным разработчикам не следует устанавливать уровень ведения журнала верхнего уровня на DEBUG. Фактически, если они вообще не установят его, он унаследует уровень корневого логгера, который обычно определяется разработчиком приложения (в данном случае, я полагаю, вы).

Я бы предложил вам сообщить об этом как об ошибке на соответствующем Южном форуме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...