Променливата 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

Бих очаквал и информационния дневник, но добре, нека опитаме отново, но този път с всеки параметър „level“ в 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 игнорира настройката ми за РЕГИСТРАЦИЯ.


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


Отговори (1)


Както обикновено, въвеждането му при препълване на стека ме накара да осъзная грешката си.

Вместо да се обадя

logger = logging.getLogger(__name__)

Трябваше да се обадя конкретно на желания регистратор:

logger = logging.getLogger('django')

Това реши проблема.

person blackfedora    schedule 15.08.2012