У меня есть три модуля, loglib, main и submod.
loglib содержит конфигурацию для моего логгера, main - моя основная программа, а submod - подмодуль.
Основной:
import os
import loglib
import logging
import submod
logger = logging.getLogger(__name__)
scriptname=os.path.splitext(os.path.basename(__file__))[0]
loglib.configure_logger(LOGFILE=scriptname,LOGLEVEL='DEBUG')
logger.info("Starting")
submod.printsomething("calling module")
logger.debug("Stopping")
submod:
import logging
logger = logging.getLogger("submod")
formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s', datefmt='%d.%m.%Y %H:%M:% S')
for h in logging.getLogger().handlers:
h.setFormatter(formatter)
logger.addHandler(h)
def printsomething(text):
logger.info("In function printsomething")
logger.info(text)
Я пытаюсь изменить формат регистратора в субмоде (и только тот), чтобы включить имя регистратора, но это не работает. Выходные данные выше:
07.11.2018 14:58:30 INFO Starting
07.11.2018 14:58:30 INFO In function printsomething
07.11.2018 14:58:30 INFO calling module
07.11.2018 14:58:30 DEBUG Stopping
Пока я ожидаю, что вторая и третья строки будут выглядеть так:
07.11.2018 submod 14:58:30 INFO In function printsomething
07.11.2018 submod 14:58:30 INFO calling module
Так что, очевидно, получение обработчиков root-logger'ов, изменение их форматеров и добавление их в submod-logger - неправильный подход. Кто-нибудь знает, каков правильный подход?