「運用におけるエラーログの重要性もしくはLog::Minimalってモジュール書いた話」で書いたLog::Minimalを、Plackと組み合わせたときにさらに便利になるMiddlewareを書きました。
ここで入手可能になるはず
http://search.cpan.org/dist/Plack-Middleware-Log-Minimal/
試しにログを吐くだけのアプリケーションを作ってリクエストをすると
こんな風に、ログに色をつけてくれるのと、REQUEST_URIも付加してくれます。ただし色が付くのは開発環境(plackup -E productionとかしない場合)です。
Log::MinimalとPlack::Middleware::Log::Minimalの最大の特徴として粗結合+グルーとなるミドルウェアという組み合わせが挙げられます。Log::Minimal自体は特に依存がないので、Web以外のcronなどでも普通に動きます。Plack::Middlewareを使った場合はMiddlewareがログを書き出す部分をフックし、付加情報を自動で付け、最適な方法で書き出します。具体的には$envのREQUEST_URIをログに追加し、psgi.errorsに対してログを書き出すように変更しています。さらにcronやjobqueue用のフレームワークがLog::Minimalをサポートすればそれぞれの環境にあった方法でログを出力することができると思われます。
サンプルに使ったpsgiファイル
use Plack::Builder;
use Log::Minimal;
builder {
enable 'Log::Minimal';
sub {
debugf("debug");
infof("info");
warnf("warn");
critf("crit");
[200,['Content-Type'=>'text/plain'],['OK']];
}
};
簡単で便利なので気軽にログを出すようにするといいと思います。