Регистрация PSGI (Perl) - PullRequest
       29

Регистрация PSGI (Perl)

8 голосов
/ 16 января 2012

Несмотря на довольно скудную и неясную документацию и эффективные инструкции для начинающих, я полюбил PSGI и в настоящее время использую его в одном из своих приложений. Я хотел бы знать, как мне управлять ведением журналов в многоузловом приложении? Что считается «лучшей практикой» в отношении входа в PSGI?

1 Ответ

5 голосов
/ 31 мая 2012

Я рекомендую использовать 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 у вас также есть возможность вести локальный и удаленный журнал для избыточности, если хотите.Журналы, отправляемые на центральный сервер, могут считаться первичными, а ведение локальных журналов может считаться резервным на случай, если центральный сервер журналов не работает некоторое время.

Использование центрального сервера журналов имеет несколько преимуществ:

  1. Вы можете 'grep' ваши журналы по всему кластеру в одном месте.
  2. Ротация журналов и анализ проще с одним набором файлов журналов.
  3. Вы лучшеготовы масштабировать ваш кластер вверх и вниз, так как вы можете отключить узел, не беспокоясь о потере регистрации или оставив сервер включенным, просто так, чтобы ночное задание cron могло запускаться для обработки журналов.

В настоящее время я таким образом совместно использую Log :: Dispach и Rsyslog для управления многоузловым кластером самостоятельно.

...