Проблема в протоколировании Python с использованием dictConfig

#python #django #logging

#python #джанго #ведение журнала #django #протоколирование

Вопрос:

Ниже приведена конфигурация, которую я использую:

 LOGGING_CONF = {
'version': 1,
'disable_existing_loggers': False,
'formatters': { 
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s %(message)s'
    },
    'simple': {
        'format': '%(levelname)s %(message)s'
    },
},
'handler': { 
    'file': {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'formatter': 'verbose',
        'filename': 'D:workspaceyogasynccodescode_svnYogaSynclogworkspacelogconfig.log',
        'maxBytes': 20480,
        'backupCount': 3, 
     },
},
'logger': {
    'extensive': {
        'level':'DEBUG',
        'handlers': 'file'
    },
},
  

}

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

 import logging
import logging.config 
logging.config.dictConfig(LOGGING_CONF)

logger = logging.getLogger('extensive')

logger.info("This is my first log")
  

Когда я выполняю это, ошибок не возникает, однако журналы не создаются.
Я не уверен, чего не хватает. Я хочу использовать только dictCongif
Пожалуйста, помогите мне с этим.

Ответ №1:

Вы должны добавить обработчик, чтобы что-то происходило со всеми этими регистраторами. Например,

 logfile = logging.handlers.FileHandler("mylog.log")
logfile.setLevel(logging.DEBUG)
logfile.setFormatter(logging.Formatter('%(asctime)s %(levelname)-8s %(module)s: %(message)s'))
logging.getLogger('').addHandler(logfile)
  

Комментарии:

1. Мы можем настроить ведение журнала тремя способами: 1. Создание регистраторов, обработчиков и форматировщиков явно с использованием кода Python, который вызывает методы настройки, перечисленные выше. 2. Создание файла конфигурации протоколирования и чтение его с помощью функции fileConfig(). 3. Создание словаря конфигурационной информации и передача его в функцию dictConfig(). вы упомянули первый способ протоколирования. я хочу сделать это с помощью 3-го метода (dictConfig)

2. @Arun: о, в этом случае, может быть, loggers ключом должен быть список? это handlers не handler так. итак, у 'extensive': { 'level': 'DEBUG', 'handlers': ['file']}

3. Спасибо, это должны быть обработчики, а не обработчик, и регистраторы, а не logger. (Глупая ошибка) и да, обработчики должны быть списком. Спасибо, вы помогли мне достать бутылку пива . 😉

4. ооо, что такое солодовый ликер, от чего вы быстрее пьянеете, что поставляется в бутылках или в каанах? ПИВО!

5. на нашем рабочем месте мы готовим охлажденное пиво для тех, кто заканчивает там дневную работу в earlist, и сегодня это CARLSBERG в бутылках