Log::Log4perlのEasy ModeでプロセスのPIDもログに出力する
お手軽なログ出力
自分のスクリプトにデバッグ目的でたくさんのprint文を入れるのが常なのですが、 最近はLog::Log4perlを使うことを覚えました。
Easy Mode というものが簡便に使えて、たとえば
use Log::Log4perl qw( :easy ); Log::Log4perl->easy_init( $DEBUG ); DEBUG "hogehoge";
これを実行すると
# perl ex1.pl 2013/03/31 14:43:04 hogehoge
と、自動的にタイムスタンプもついて出力されるのが嬉しい。
PIDもログ出力
ログ出力のメッセージフォーマットはカスタマイズ可能でタイムスタンプ以外に ファイル名や行番号なども表示させることができます。 途中でforkするようなマルチプロセスのスクリプトではそれぞれのログメッセージをどのプロセスが 出力しているかを判別できるようにPIDを出すとよいと思います。
use Log::Log4perl qw( :easy ); Log::Log4perl->easy_init( { level => $DEBUG, layout => "%d %p [%P] (%F %L) %m%n", } ); DEBUG "hogehoge";
こうすると出力は
# perl ex2.pl 2013/03/31 14:52:25 DEBUG [3959] (ex2.pl 14) hogehoge
layoutの書き方はperldoc Log::Log4perlで「Log Layouts」の節に記載があります。