Python обработчик файла журнала не использует указанный обработчик - PullRequest
0 голосов
/ 22 апреля 2020

Я использую файл 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
...