# Log::Handlerで Stamped なログファイル書き出したくなったので書いてみた {{tag: perl, cpan}} これまで、自分は {{cpan: Log::Dispatch}} 使うことが多かったのですが、ちょっと思い立って {{cpan: Log::Handler}} 使ってみたくなって(速いらしいってのと、インターフェースがよさげだったので)、[[https://github.com/bayashi/Log-Handler-Output-File-Stamper Log::Handler::Output::File::Stamper]] というサブクラスを書きました。ログファイル名に随時 yyyyMMdd とかを追加して書き出すためのものです。 my $log = Log::Handler->new; $log->add( 'Log::Handler::Output::File::Stamper' => +{ filename => 'foo.log.%d{yyyyMMdd}' } ); $log->info('hoge'); コードはだいたい以下のモジュールからコピペして作りました。 * {{cpan: Log::Dispatch::File::Rolling}} * {{cpan: Log::Dispatch::File::Stamped}} 主に Rolling の方を参考にしたのですが、よく見るとこのモジュールは、{{cpan: Log::Log4perl::DateFormat}} というモジュールひとつに依存するがために、そのディストリビューションである {{cpan: Log::Log4perl}} に依存する羽目になってて、自分はそれが嫌だったので、やっぱりコピペして [[https://github.com/bayashi/Log-Stamper Log::Stamper]] というモジュールをでっち上げました(命名的に Log4j どこいった感すごすぎますかね)。 use Log::Stamper; my $stamp = Log::Stamper->new("yyyy-MM-dd"); my $time = time(); print $stamp->format($time); # 2013-01-13 [[https://github.com/bayashi/Log-Handler-Output-File-Stamper Log::Handler::Output::File::Stamper]] も [[https://github.com/bayashi/Log-Stamper Log::Stamper]] もまだ github にしかあげておらず、テストも十分ではないですが、一応、なんかそんなん書きましたとうことで。