Я пытаюсь разобраться с модулем ведения журнала Python, который, откровенно говоря, пока недоступен. В настоящее время у меня есть один «основной» регистратор в моем основном скрипте:
logger = logging.getLogger(__name__)
handler = logging.FileHandler('debug.log')
handler.setFormatter(logging.Formatter('%(levelname)s: %(asctime)s: %(name)s: %(message)s'))
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug(
'{} run for {} using {} values.'.format(
skill, str(datetime.now()), key, mode
)
)
, и у меня есть дополнительный регистратор в импортированном модуле:
logger = logging.getLogger(__name__)
handler = logging.FileHandler('debug.log')
handler.setFormatter(logging.Formatter('%(levelname)s: %(asctime)s: %(name)s: %(message)s'))
logger.addHandler(handler)
Однако, хотя я и говорю обоим регистраторам войти только в файл (оба имеют только те обработчики, которые я установил), я все еще получаю информацию, напечатанную в stout из регистратора root. Вызов журнала. root .handlers показывает, что у регистратора есть StreamHandler, который появляется только при импорте модуля, содержащего второй модуль.
Мой хакерский метод решения дополнительного потока - просто удалить из корневых обработчиков. Однако это похоже на неканоническое решение. Я предполагаю, что я каким-то образом неправильно реализовал модуль, а не как предназначенную функцию модуля. Как вы собираетесь правильно настроить логгеры в такой иерархической манере?