@ ответ цитирует один из вариантов различения приложений. Тем не менее, кадрирование сообщений системного журнала на самом деле имеет 2 поля, которые делают его еще проще: hostname
и tag
(более широко известный и используемый в качестве имени программы).
hostname
устанавливается системным системным журналом, прежде чем он отправит сообщение на централизованный сервер. Он будет одинаковым для всех приложений в одной системе, но может быть удобен, когда вы проходите мимо одного сервера.
Более интересным является tag
. Ваше приложение определяет tag
, когда оно создает SyslogLogger
. Например:
SyslogLogger.new('app1')
Класс logger отправляет системный системный журнал как app1
, и он появляется как в локальном файле журнала, так и во всех удаленных местах назначения системного журнала (без необходимости изменять само сообщение журнала). По умолчанию rails
. Все современные демоны системного журнала могут фильтроваться на основе tag
; см. program()
для syslog-ng и $programname
для rsyslog.
Кроме того, стоит отметить, что SyslogLogger
в основном включает в себя функции C openlog()
и syslog()
, так что в основном вся последующая конфигурация выполняется в системном демоне. Обычно это желательно, но иногда вы можете захотеть, чтобы ваше приложение Rails регистрировалось непосредственно в определенном месте назначения (например, для упрощения автоматического развертывания, изменения атрибутов, не разрешенных syslog()
, или запуска в средах без доступа к системному демону).
Мы столкнулись с парой таких случаев и сделали замену Logger
, которая сама генерирует пакеты UDP. remote_syslog_logger
драгоценный камень на GitHub .