Ведение журнала не выводит журнал отладки и информации

#logging #google-colaboratory #logfile

Вопрос:

Я написал следующий код:

     import logging

    logging.basicConfig(filename='rb-log.log', 
                    format='%(process)d-%(asctime)s-%(levelname)s-%(message)s',
                    level=logging.DEBUG)

    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')
 

Файл журнала содержит:

    646-2021-10-30 22:08:39,404-WARNING-This is a warning message
   646-2021-10-30 22:08:39,406-ERROR-This is an error message
   646-2021-10-30 22:08:39,407-CRITICAL-This is a critical message
 

В файл журнала записываются только ПРЕДУПРЕЖДЕНИЯ, ОШИБКИ и КРИТИЧЕСКИЙ журнал. Журналы ОТЛАДКИ и ИНФОРМАЦИИ не записываются. Что я здесь делаю не так?

Ответ №1:

Вы не показываете, как вы настроили logger , поэтому кажется, что это происходит до настройки. Конфигурация ( logging.basicConfig(...) ) не будет применяться к уже настроенному регистратору; ваш регистратор использует уровень предупреждения по умолчанию.

Вы можете использовать удобные методы logging , как показано на рисунке https://docs.python.org/3/howto/logging.html#logging-to-a-file

 logging.basicConfig(filename='rb-log.log', 
                    format='%(process)d-%(asctime)s-%(levelname)s-%(message)s',
                    level=logging.DEBUG)
logging.debug('This is a debug message')
logging.info('This is an info message')
 

или настройте ведение журнала перед созданием вашего регистратора:

 logging.basicConfig(filename='rb-log.log', 
                    format='%(process)d-%(asctime)s-%(levelname)s-%(message)s',
                    level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('This is a debug message')
logger.info('This is an info message')
 

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

1. вы правы. Я создал переменную logger перед вызовом метода basicConfig. Решено.