ОТВЕТ ОБНОВЛЕНО - 15 мая 2013 г. -
смотрите внизу для дополнительной опции регистрации
Если вы хотите иметь один файл журнала - используйте syslog, пусть он обрабатывает мультиплексирование всех входов в один файл. Несколько процессов, добавляющих в один файл некрасиво, даже с обходными путями многопроцессорности.
Помимо преимущества потокового / процессного «понижающего микширования» различных потоков информации журналирования, вы всегда можете указать удаленный хост, на который вы хотите отправлять журналы, а также это делает ротацию файлов журналов быстрым, поскольку ваш клиенты пишут либо в сокет домена, либо в сокет UDP - им не нужно ждать, пока вы управляете файлами под ними. А еще лучше, вы не потеряете сообщения.
Используемый в сочетании с демоном системного журнала, таким как syslog-ng, вы можете выполнять множество нарезок и кубиков, ретрансляцию сообщений, фильтрацию дублированных сообщений и т. Д.
Короче говоря, syslog лучше, чем управлять своим собственным файлом журнала (на мой взгляд), лучший аргумент против syslog: вы не «владеете» сервером (и, возможно, файлы журнала могут быть недоступны вы).
Если вы хотите быть супер-классным, отправьте свои данные журнала на Splunk, и вы поднимете игру на следующий уровень. Большинство людей используют Splunk для агрегации журналов ИТ, но системный журнал из вашего приложения в 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 и другие), которая обеспечивает централизованное расположение для вас, чтобы отправить ошибки для мониторинга. Это выглядит аккуратно.