менеджер журналов python - PullRequest
       7

менеджер журналов python

2 голосов
/ 18 августа 2010

У меня есть несколько программ на Python, которые работают параллельно.Я хочу написать программу на Python, которая будет управлять журналами программ, что означает, что другие программы отправят сообщение журнала этой программе, и программа запишет его в файл журнала.Еще одной важной особенностью является то, что в случае сбоя одной из программ «программа управления журналом» узнает об этом и может записать ее в файл журнала.Я пытаюсь использовать этот образец http://docs.python.org/library/logging.html#sending-and-receiving-logging-events-across-a-network, но мне не удалось.

Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

1 голос
/ 31 августа 2012

Я написал Python Logger, который делает именно это (даже с поддержкой MPI).Он доступен по адресу https://github.com/JensTimmerman/VSC-tools/blob/master/vsc/fancylogger.py

Этот регистратор может регистрировать в порт udp на удаленной машине.

Там я запускаю демон, который собирает журналы и записывает их в файл: https://github.com/JensTimmerman/VSC-tools/blob/master/bin/logdaemon.py

Этот скрипт запустит для вас демон: https://github.com/JensTimmerman/VSC-tools/blob/master/bin/startlogdaemon.sh

Если вы затем запустите свои процессы Python и запустите их параллельно с MPI, например, вам нужно будет только использовать fancylogger.getLogger () и использовать его как обычный регистратор Python.Он выберет переменные среды, установленные сценарием, войдет в систему на этом сервере и получит дополнительную информацию MPI в записях журнала.(например, номер потока mpi)

Если вы не используете mpi, у вас будет две опции:

  • установить переменные 'FANCYLOG_SERVER' и 'FANCYLOG_SERVER_PORT' вручную в каждойоболочка, в которой вы запускаете удаленный процесс Python

  • или просто запускаете демон.А в скриптах python вы получите свой логгер

вот так:

import fancylogger
fancylogger.logToUDP(hostname, port=5005)
logger = fancylogger.getLogger()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...