出力されるログを制御するPlack::Middleware::LogFilterというものを書いた。
https://github.com/memememomo/Plack-Middleware-LogFilter
以下のようにして使用する。
app.psgi
use Plack::Builder;
builder {
enable 'LogFilter', filter => sub {
my ($env, $output) = @_;
# ignore static file log
if ($output =~ /\/static\/(js|css|images)/) {
return 0;
}
return 1;
};
$app
};
ログの1行1行で、出力するかどうかを判別するフィルタを設定できる。
上記の例では、静的なファイルの配信ログを出力しないように設定している。
開発でplackupコマンドでアプリを立ち上げて
WAFなりPlack::Middleware::Staticなりで、
静的ファイルもPSGIアプリで返すと、
静的ファイルの配信ログもドバっと出力されてしまう。
printデバッグで出力しているログが流れてしまってたりしたので不便だった。
パイプやgrepで頑張れば同じことができそうな気もしたが、
うまくいかなかったのでひとまずこの形で解決した。