Blog

cronolog と plackup の連携

multilog に access log と error log をまぜてだすと、エラーでてんのかどうかよくわからなくなっちゃうので、まあわけた方がよろしい。
multilog でパターンマッチで適当に分割するという手もあるけれど、アクセスログは集計などにもつかうので、日ごとにファイルがわかれていた方が便利でしょう。

というわけで、こんな風にしてみた。

use Plack::Builder;

builder {
    open my $fh, "| /usr/bin/cronolog /var/log/plackup/%Y/%m/myapp-%Y%m%d.l
og"
      or die "cannot load log file: $!";
    select $fh; $|++; select STDOUT;
    enable 'Plack::Middleware::AccessLog',
        logger => sub { print {$fh} @_ };

    enable "Plack::Middleware::ReverseProxy";

    $app;
};