Log::Dump
名前の通り、基本的にはデバッグ用のロガーなのですが、useするだけでlogなどのメソッドがはえて、オブジェクトだろうとなんだろうと気にせず放り込めるというの(だけ)が売り(よくある $c->log->info("message") のようなAPIはテスト用のモックをつくるときとか、ロガーを切り替えたくなったときとかに面倒なことになりがち)。
SYNOPSISはこんな感じ。
use Log::Dump;
# クラスから直接log
__PACKAGE__->log( error => 'foo' );
# オブジェクトからももちろん使える
sub some_method {
my $self = shift;
# 引数が複数にわかれていても、オブジェクトまじりでも無問題
# (必要ならData::Dumpでダンプする)
$self->log( info => 'my self is ', $self );
}
# ラベル単位で表示するログを絞り込める
sub broken_method {
my $self = shift;
$self->logfilter('broken_only');
$self->log( broken_only => 'shown' );
$self->log( debug => 'not shown' );
}
# ファイル出力にも対応。メール送信とかは適当にサブクラス/カスタムロガーを書いてください。
__PACKAGE__->logfile('log.txt');
__PACKAGE__->log( file => 'will be saved' );
__PACKAGE__->logfile(''); # to close
# ログを全面的にオフにしたい場合
__PACKAGE__->logger(0);
# デフォルトの動作が気にくわない場合は(一時的に)別のロガーを使うこともできます
__PACKAGE__->logger( Log::Dispatch->new );強制的にlogメソッドその他を追加するという意味であんまりお行儀のよいモジュールではありませんが、お手軽スクリプトにログを追加したくなったときなんかには便利かな、と。