週末には少しPerlを。

Perlスクリプトの学習日記です。

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」の節に記載があります。

参考