« 傍に置きながら | ホーム | Mojolicious でコマンド »

2011年12月21日

Mojo::Log のフォーマットをカスタマイズする?

ずばり format メソッドをオーバーライドする!?

package MyApp::Log;
use base qw/Mojo::Log/;

sub format { # override
    my ($self, $level, @msgs) = @_;

    my ($package, $filename, $line, $subroutine, $hasargs, 
    $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller(5);

    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) 
                = localtime time;
    my $ts = sprintf '%04d-%02d-%02d %02d:%02d:%02d',
                $year + 1900, $mon + 1, $mday, $hour, $min, $sec;
 
    my $msgs = join "\n", @msgs;
    return "[$ts] [$subroutine] [$level] $msgs\n";
}

1;

Mojo::EventEmitter との関係があるとのことであるけれど、 Mojo::EventEmitter って? という認識度に過ぎないので、とりあえずはこれワークアラウンドということで。

それから caller の情報を使うときは "5" ぐらいの深度を指定すると丁度良さそう。

[2011-12-21 01:31:51] [MyApp::startup] [debug] initialized
[2011-12-21 01:31:51] [MyApp::Commands::list::process] [info] hey!

コメントする

OpenID対応しています OpenIDについて

このブログ記事について

このページは、hiroakiが2011年12月21日 01:43に書いたブログ記事です。

ひとつ前のブログ記事は「傍に置きながら」です。

次のブログ記事は「Mojolicious でコマンド」です。

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