Поведение в зависимости от ОС с модулем регистрации Python
После этого вопроса и ответа я ищу решение следующей проблемы:
У меня есть программа на Python, которая должна работать как в Windows, так и в Linux.
Мой процесс Python порождает дочерний процесс, и у них обоих должен быть файловый регистратор. Я хочу, чтобы каждый из них вошел в свой собственный файл журнала.
процесс создания:
import multiprocessing
multiprocessing.Process(target=my_target, args=(my_args,))
создание журнала:
import logging
logger = logging.getLogger()
fh = logging.FileHandler(log_file, mode="a+")
logger.addHandler(fh)
В Windows это прекрасно работает, но в Linux я получил дочерний вывод, записанный как в дочерний, так и в родительский журнал.
Как лучше всего справиться с таким сценарием?
1 ответ
Решение
В начале выполнения команды chilld добавлен следующий код для решения проблемы:
log = logging.getLogger()
# Remove any existing handlers
for handler in log.handlers:
log.removeHandler(handler)