Plack::Middleware::Log::Minimal v0.01ではLog::Minimalのログ出力方法などの設定を一切できませんでしたが、v0.02でいくつか設定ができるようになりました。Log::Minimal v0.04でサポートした自動シリアライズも使えます。

まず、自動シリアライズの機能。

builder {
    enable "Plack::Middleware::Log::Minimal", autodump => 1;
    sub {
        my $env = shift;
        warnf("warning message");
        ["200",[ 'Content-Type' => 'text/plain' ],["OK"]];
    };
};

このように、autodumpを設定すると、Log::Minimal::AUTODUMPが有効になります。

二つ目は、xaicronさんにpatchもらった、LOG_LEVEL。

builder {
    enable "Plack::Middleware::Log::Minimal",
        loglevel => 'WARN';
    sub {
        my $env = shift;
        infof("information message");  #出力されない
        warnf("warning message"); 
        ["200",[ 'Content-Type' => 'text/plain' ],["OK"]];
    };
};

DEBUG,INFO,WARN,CRITICALとNONEが指定できます。NONEを指定すると何も出力されません。

最後は、formatter。ログを出力する前のhook的に使えます。

enable 'Log::Minimal',
    formatter => sub {
        my ($env, $time, $type, $message, $trace, $raw_message) = @_;
        sprintf "%s [%s] [%s] %s at %s\n", $time, $type, $env->{REQUEST_URI}, $message, $trace;
    });

formatterにはcoderefを指定します。PSGIのenv、時間、ログレベル、色付きメッセージ、トレース情報、色なしメッセージがcoderefに渡されるので、自由にカスタマイズできます。もし、multilogによるロギングをしていて、時間情報が必要ないなら、

formatter => sub {
    my ($env, $time, $type, $message, $trace, $raw_message) = @_;
    # [type] [uri] [pid] message at trace
    sprintf "[%s] [%s] [%s] %s at %s\n", $type, $env->{REQUEST_URI}, $$, $raw_message, $trace;
});

のようにして消してしまえば良さそうです。この辺は環境変数のPLACK_ENVなどをみて、切り替えるとよさげかもしれません。出力方法を弄るだけではなく、ここでsyslogに飛ばすなどのこともできると思います。

このブログ記事について

このページは、Masahiro Naganoが2010年12月29日 11:28に書いたブログ記事です。

ひとつ前のブログ記事は「Log::Minimalで自動シリアライズサポートしました」です。

次のブログ記事は「 この一年のブログエントリまとめ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja