Я рекомендую использовать Plack :: Middleware :: AccessLog для доступа к журналу и Plack :: Middleware :: LogDispatch для пользовательской регистрации.Оба они, в свою очередь, используют популярный модуль Log :: Dispatch .
Документы промежуточного программного обеспечения LogDispatch в настоящее время не показывают, как использовать объект журналирования после его настройки.Вот пример:
my $app = sub {
my $env = shift;
$env->{'psgix.logger'}->({ level => "debug", message => "This is debug" });
return [ 200, [], [] ];
};
Чтобы решить проблему с несколькими узлами, вы можете использовать Log :: Dispatch :: Syslog , который будет отправлять записи в rsyslog который, в свою очередь, может передать данные журнала на другой сервер rsyslog.Таким образом, все узлы могут регистрироваться на одном центральном сервере журналирования.
Благодаря гибкости Log :: Dispatch у вас также есть возможность вести локальный и удаленный журнал для избыточности, если хотите.Журналы, отправляемые на центральный сервер, могут считаться первичными, а ведение локальных журналов может считаться резервным на случай, если центральный сервер журналов не работает некоторое время.
Использование центрального сервера журналов имеет несколько преимуществ:
- Вы можете 'grep' ваши журналы по всему кластеру в одном месте.
- Ротация журналов и анализ проще с одним набором файлов журналов.
- Вы лучшеготовы масштабировать ваш кластер вверх и вниз, так как вы можете отключить узел, не беспокоясь о потере регистрации или оставив сервер включенным, просто так, чтобы ночное задание cron могло запускаться для обработки журналов.
В настоящее время я таким образом совместно использую Log :: Dispach и Rsyslog для управления многоузловым кластером самостоятельно.