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), чтобы заставить их распространяться обратно в корневой логгер.

Правильный ли это подход?

Вернуться на верх