2016-09-28 7 views
1

Мне нужно создать единый журнал, который можно использовать в моем пакете python, но некоторые функции реализуют многопроцессорность. Я хочу, чтобы все эти функции записывались в один и тот же файл журнала, как и все остальное.Использование журнала с модулем многопроцессорности

Я знаю, что в Python 3.2+ есть встроенный способ сделать это, но мне нужно также вернуть порт в Python 2.7.x.

Есть ли какой-либо код, который хорошо работает как с многопроцессорными, так и с многопроцессорными функциями для ведения журнала?

Обычно, я хотел бы создать журнал, как, например:

module = sys.modules['__main__'].__file__ 
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG, 
       format='%(name)s (%(levelname)s): %(message)s') 
log = logging.getLogger(module) 
fh = RotatingFileHandler(arguments.o, mode='a', maxBytes=2*1024*1024, 
         backupCount=2, encoding=None, delay=0) 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - % (message)s') 
fh.setFormatter(formatter) 
fh.setLevel(logging.DEBUG) 
log.addHandler(fh) 

Тогда результат будет писать в один файл. Он отлично работает, но когда я это реализую, этот код создаст несколько файлов, которых я не хочу.

Любые идеи?

Спасибо

+1

Вы помещаете этот код в обычный 'if __name__ == '__main __':' условный? Помните, что ** все **, которые не являются импортом или функцией/классом, должны идти туда при использовании «многопроцессорности». – Bakuriu

+0

@Bakuriu - Я делаю создание журнала на уровне модуля, потому что это для пакета python. –

ответ

0

Функциональность, чтобы сделать это в Python> = 3.2 (через QueueHandler и QueueListener классов, как описано here) доступна для Python 2.7 в рамках проекта logutils.

+0

Благодарим вас за это. Может ли это использоваться для записи сообщений в один файл журнала? –

+0

Итак, когда я пытаюсь передать файл журнала на многопроцессор, он бросает ошибку pickle, вы можете предоставить простой пример того, как использовать этот инструмент? –

+0

@ josh1234 Сообщение, с которым я связан, имеет рабочий пример. –

Смежные вопросы