Я использую файл logger.conf, включенный ниже, где у меня есть два регистратора три, если вы считаете root. OnPremLog используется в нормальных условиях, и я недавно создал TestingLog для обработки автоматизированного модульного тестирования, которое требует запуска кода не в обычной операционной среде. Когда я реализовал этот новый регистратор, у меня теперь есть обработчик для каждого.
Проблема в том, что когда я запускал свой OnPremCode, используя этот регистратор, как обычно, обработчик файлов теперь ведет себя так, как если бы он был обработчиком тестирования (он пишет вместо добавления). Я хочу, чтобы тестовый регистратор просто перезаписывал журнал каждый раз, но при обычных операциях у меня есть десятки сценариев, которые пишут в один и тот же журнал и должны добавить. Во-первых, моя реализация логгера из фрагмента реального кода, а затем файла conf в полном объеме.
Для тех, кому нужно больше фона, он работает на python 3.7 на windows, а автоматическая сборка происходит на какое-то docker изображение linux, но эта проблема не решается.
Реализация:
logging.logFileFullPath = cfg.LogsFolder + cfg.onPremLogFile + T_STAMP + '.log'
logging.config.fileConfig(cfg.ScriptsFolder + cfg.LogConfFile)
LOGGER = logging.getLogger('OnPremLog')
После просмотра аналогичного вопроса и ответа на него, указывающего на чувствительность к регистру, я проверил, и мои ссылки верны.
Файл конфигурации:
[loggers]
keys=root,OnPremLog,TestingLog
[handlers]
keys=MainHand,OnPremHand,TestingHand
[formatters]
keys=MainForm
[logger_root]
level=NOTSET
handlers=MainHand
[logger_OnPremLog]
level=INFO
handlers=OnPremHand
qualname=OnPremLog
propagate=0
[logger_TestingLog]
level=INFO
handlers=TestingHand
qualname=TestingLog
propagate=0
[handler_MainHand]
class=StreamHandler
level=WARNING
formatter=MainForm
args=(sys.stdout,)
[handler_OnPremHand]
class=FileHandler
level=INFO
formatter=MainForm
args=(logFileFullPath, 'a')
[handler_TestingHand]
class=FileHandler
level=INFO
formatter=MainForm
args=(logFileFullPath, 'w')
[formatter_MainForm]
format=GACF~%(asctime)s~%(levelname)s~%(filename)s~%(name)s~%(message)s
datefmt=
class=logging.Formatter