Как перенаправить сообщения регистрации из многопроцессорного модуля в файл? - PullRequest
4 голосов
/ 22 марта 2012

В документации Python я обнаружил, что регистрация сообщений возможна в скриптах python, которые используют многопроцессорный модуль для порождения различных процессов.

import multiprocessing
import logging

logger = multiprocessing.log_to_stderr()
logger.setLevel(logging.INFO)

Итак, logger.warning('doomed') выдаст мне сообщение 'doomed', но только на консоль.

Как я могу переключить сообщения журнала в файл?

1 Ответ

5 голосов
/ 22 марта 2012

Многопроцессное ведение журнала не тривиально, но и не сложно.Вам понадобится модуль logging.

Главное - иметь процесс прослушивателя, который будет получать все записи журнала через многопроцессорные очереди .Затем этот процесс слушателя будет обрабатывать эти записи с помощью любых внутренних обработчиков, которые вы решите использовать.В вашем случае вы можете использовать FileHandler или аналогичный.

Если вы работаете в Python 3.2 или более поздней версии, вы будете иметь оба QueueHandlerи QueueListener в стандартной библиотеке.Quelistener - это процесс слушателя, о котором я говорил ранее (да, у него есть метод start()).

Если вы используете предыдущую версию Python, взгляните на эту ссылку , который в основном показывает, как их переписать (и как их использовать).


Если вы хотите ссылки из официального документа, посмотрите на Ведение журнала в один файл изнесколько процессов сеанс из Ведение журнала Кулинарной книги .

Вас также может заинтересовать этот ответ из вопроса Как мне войти в систему при использовании многопроцессорнойв Python?

...