#python #logging
#python #ведение журнала
Вопрос:
У меня есть script.py файл, в который я импортирую модуль запросов. Я заметил, что, используя root logger на уровне DEBUG, я могу регистрировать все запросы GET, что приятно.
Но я хотел бы иметь другой файл журнала для регистрации других сообщений на информационном уровне. Итак, я сделал это:
# root logger to log all GET requests
import logging
logging.basicConfig(filename= "allrequests.log", level=logging.DEBUG,
format='%(asctime)s: %(levelname)s: %(message)s')
# second logger to log only INFO
formatter = logging.Formatter('%(asctime)s: %(levelname)s: %(message)s')
handler = logging.FileHandler('onlyinfo.log')
info_logger = logging.getLogger('second_logger')
info_logger.setLevel(logging.INFO)
info_logger.addHandler(handler)
проблема в том, что теперь, когда я использую:
info_logger.info('my message')
он зарегистрирует это дважды в первом файле журнала и один раз во втором файле.
Было бы неплохо, если бы он регистрировал информационные сообщения только один раз в каждом файле.
Другими словами, я хотел бы регистрировать все сообщения (сообщения уровня ОТЛАДКИ и ИНФОРМАЦИИ) в одном файле журнала и только ИНФОРМАЦИОННЫЕ сообщения в другом файле журнала. Как я могу это сделать?
Комментарии:
1.
basicConfig
добавляется обработчик к корневому регистратору, и вы подключаете его к вспомогательному регистратору. Оба будут вызваны, когда подрегистраторpropagate
установлен.2. Это хорошая практика? Как еще я могу наследовать некоторые сообщения от root logger? @KlausD.