「君のPSGIファイルを僕のミドルウェアでいっぱいにしたい」という台詞を思いついたけど使い道がない kazeburo です
似たようなログ記録モジュールはCPANにいくつかあるんだけど、File::RotateLogsっていうのを書いてCPANにあげました
https://metacpan.org/release/File-RotateLogs
特徴は以下の通り
- strftimeベースのファイル名生成
 - 秒数指定のrotation
 - rotation時に最新のファイルへのsymlink
 - 古いログはforkしてバックグラウンドで削除
 
使い方
Proclet と組み合わせると
my $app = builder {
    enable 'AccessLog';
    $app;
};
my $rotatelogs = File::RotateLogs->new(
    logfile => '/path/to/app_log.%Y%m%d%H%M',
    linkname => '/path/to/app_log',
    rotationtime => 3600,
    maxage => 86400,
);
my $proclet = Proclet->new(
    logger => sub { $rotatelogs->print(@_) },
);
$proclet->service(
    code => sub {
        my $loader = Plack::Loader->load(
            'Starlet',
            port => 5432,
            max_workers => 4,
        );
        $loader->run($app);
    },
    tag => 'web'
);
$proclet->service(
    code => sub {
        $worker->run
    },
    tag => 'worker'
);
$proclet->run;
                                        これで1日分のworkerとwebサーバのログを記録しておけるし、tail -F /path/to/app_log だけでログをずっと追いかけて行く事ができます。
このモジュール、始めはPlack::Middleware::AxsLogというAccessLog+αなミドルウェアを作っていたんだけど、どうみても単体の方が便利なので単独のモジュールにしてリリースしました。どうぞお試しください
