Django, многопроцессорная обработка и протоколирование в python
У меня есть представление django с методом, который вызывает multiprocessing.Process(), и я хотел бы настроить ведение журнала, чтобы писать журналы в отдельный файл для каждого подпроцесса.
Я прочитал несколько примеров в поваренной книге Python logging, которые посвящены мультипроцессингу и записи журналов в один файл, но я хочу писать в отдельные файлы
Итак, я пытаюсь создать новый экземпляр логирования в дочернем процессе. Я установил logging на None в настройках django (потому что я думаю, что это вызывается только один раз в setup()) и затем применил конфигурацию logging в методе multiprocessed, как показано ниже -
def run_upgrade(self, input_data, status):
logger = logging.getLogger("parent")
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# set the console handler
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
# set the filehandler
fh = logging.FileHandler(f'/var/log/example/{status.device}.log')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
В импортируемых модулях я затем вызывал getLogger(parent.child), чтобы заставить их распространяться обратно в корневой логгер.
Правильный ли это подход?