Переменная Django 1.4 LOGGING в settings.py, похоже, игнорируется

У меня есть модуль, который я хочу зарегистрировать в Django, который выглядит примерно так:

import logging
logger = logging.getLogger(__name__)

def foo():
    #this is a test of logging
    logger.info("info foo")
    logger.warning("warn foo")
    logger.error("error foo")

Мой LOGGING в settings.py установлен на следующее:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(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',
            },
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
        }
    },
    'loggers': {
        'django': {
            'handlers':['null', 'console'],
            'propagate': True,
            'level':'INFO',
            },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
            },
    }
}

Вывод, когда я запускаю представление, вызывающее foo, выглядит следующим образом:

WARNING:root:warn foo
ERROR:root:error foo

Я бы также ожидал, что информационный журнал будет, но ладно, давайте попробуем еще раз, но на этот раз с каждым параметром «уровня» в LOGGING, установленным на «INFO»:

WARNING:root:warn foo
ERROR:root:error foo

Хорошо... а как насчет того, чтобы установить все на «ОШИБКА»?:

WARNING:root:warn foo
ERROR:root:error foo

LOGGING закомментирован?

WARNING:root:warn foo
ERROR:root:error foo

Я установил DEBUG = False и даже удосужился установить вручную

LOGGING_CONFIG = 'django.utils.log.dictConfig'

У кого-нибудь есть другие идеи? Я не понимаю, почему Django игнорирует мою настройку LOGGING.


person blackfedora    schedule 15.08.2012    source источник


Ответы (1)


Как обычно, набрав его при переполнении стека, я понял свою ошибку.

Вместо того, чтобы звонить

logger = logging.getLogger(__name__)

Мне нужно было вызвать нужный регистратор конкретно:

logger = logging.getLogger('django')

Это решило проблему.

person blackfedora    schedule 15.08.2012