syslog.syslog против SysLogHandler

Я смотрю, как войти в syslog из моего приложения Python, и обнаружил, что есть два способа сделать это:

  1. Использование подпрограмм syslog.syslog()
  2. Использование модуля логгера SysLogHandler

Какой вариант лучше всего использовать, преимущества / недостатки каждого и т. Д., Потому что я действительно не знаю, какой из них мне следует использовать.

3 ответа

syslog.syslog() может использоваться только для отправки сообщений на локальный системный журнал. SysLogHandler может использоваться как часть всеобъемлющей, настраиваемой подсистемы ведения журналов и может регистрироваться на удаленных компьютерах.

Модуль регистрации - это более комплексное решение, которое потенциально может обрабатывать все ваши сообщения журнала, и является очень гибким. Например, вы можете настроить несколько обработчиков для вашего регистратора, и каждый из них может быть настроен для ведения журнала на своем уровне. У вас может быть SysLogHandler для отправки ошибок в syslog и FileHandler для отладки журналов, а также SMTPHandler для отправки действительно важных сообщений в ops. Вы также можете определить иерархию регистраторов в своих модулях, и каждый из них имеет свой собственный уровень, чтобы вы могли включать / отключать сообщения от определенных модулей, таких как:

import logging
logger = logging.getLogger('package.stable_module')
logger.setLevel(logging.WARNING)

И в другом модуле:

import logging
logger = logging.getLogger('package.buggy_module')
logger.setLevel(logging.DEBUG)

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

Пока что есть недостаток в logging.handlers.SysLogHander который еще не упомянут. То есть я не могу установить такие параметры, как LOG_ODELAY или же LOG_NOWAIT или же LOG_PID, С другой руки, LOG_CONS а также LOG_PERROR может быть достигнуто с добавлением дополнительных обработчиков, и LOG_NDELAY по умолчанию уже установлено, потому что соединение открывается при создании экземпляра обработчика.

Другие вопросы по тегам