Поведение в зависимости от ОС с модулем регистрации 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)
Другие вопросы по тегам