Ответ 1
ОТВЕТ ОБНОВЛЕНА - 15 мая 2013 года - см. нижнюю часть дополнительной опции ведения журнала
Если вы хотите иметь один файл журнала - используйте syslog, пусть он обрабатывает мультиплексирование всех входов в один файл. Наличие нескольких процессов, добавляемых к одному файлу, является уродливым, даже с обходными методами многопроцессорной обработки.
Помимо преимущества "понижающего микширования" потоков/процессов в различных потоках информации о протоколировании, вы всегда можете указать удаленный хост для отправки журналов, если хотите, а также делает поворот в лог файле ветерок как ваш клиенты пишут либо сокет домена, либо сокет UDP - им не нужно ждать, пока вы управляете файлами под ними. И еще лучше, вы не потеряете сообщения.
Используется в сочетании с демонами syslog, такими как syslog-ng, вы можете делать много фантазийных резаний и рифов, ретрансляции сообщений, дублирования фильтрации сообщений и т.д.
Короче говоря, syslog лучше, чем управлять собственным файлом журнала (по моему мнению), лучшим аргументом против syslog является то, что вы не владеете сервером (и, якобы, файлы журнала могут быть недоступны вы).
Если вы хотите быть супер-потрясающим, отправьте свои данные журнала в splunk, и вы перенесете свою игру на следующий уровень. Большинство людей используют Splunk для агрегации журналов ИТ, но syslogging из вашего приложения в splunk - это ярлык для потрясающих возможностей интеллектуального анализа данных, чтобы понять узкие места производительности, использовать шаблоны и многое другое.
#!/usr/bin/python
import logging
from logging.handlers import SysLogHandler
# Setup
logger = logging.getLogger( "mything" )
hdlr = SysLogHandler( address = '/dev/log', facility = SysLogHandler.LOG_USER )
logger.addHandler( hdlr )
formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s')
hdlr.setFormatter( formatter )
logger.setLevel( logging.INFO )
logger.info( 'hello Laverne!' )
logger.debug( 'The Great Ragu has taken ill!' )
НОВОЕ СОДЕРЖАНИЕ - 15 мая 2013 г.
Существует дополнительная опция, если у вас есть инфраструктура/упорство, чтобы настроить ее - Sentry, в которой есть библиотеки, доступные для Python (а также Javascript и др.), Который обеспечивает централизованное расположение для отправки ошибок для мониторинга. Он выглядит аккуратно.