Log::Log4perl
ログファイル出力スキームを提供する
use Log::Log4perl;
パッケージをロードする。
== 設定ファイルの書式 ==
log4perl.logger=<LEVEL>,<appenderID>,…
log4perl.logger.<module>=<LEVEL>,<appenderID>,…
log4perl.appender.<appenderID>=<appender
module>
log4perl.appender.<appenderID>.layout=[SimpleLayout |
PatternLayout]
log4perl.appender.A1.layout.ConversionPattern=<pattern>
- log4perl.logger:デフォルトのロギング動作指定
get_loggerメソッドでロギング動作指定のないモジュール名を指定すると、このロギング動作が選択される。 - log4perl.logger.<module>:<module>に対するロギング動作指定。
get_loggerメソッドでモジュール名<module>を指定すると、このロギング動作が選択される。 - LEVEL:ログレベル。DEBUG|INFO|WARN|ERROR|FATAL|TRACE|ALL|OFF
- appenderID:appenderを識別する任意のID。複数のIDを指定すると、同時に複数出力が行われる。
- appender module:Appender Module名
- SimpleLayout:$level - $message 形式のログを出力する。
- PatternLayout:パターン文字列で整形されたログを出力する。
- pattern:PatternLayoutを使う場合の整形パターン。
http://search.cpan.org/~mschilli/Log-Log4perl-1.20/lib/Log/Log4perl/Layout/PatternLayout.pm 参照
== Appender Module ==
Log::Log4perl::Apender::Screen:コンソールに出力する
下記のオプション設定が可能
log4perl.appender.<appender ID>.stderr = 0 | 1 # 0=STDOUT,1=STDERR
Log::Log4perl::Appender::File:ファイルに出力する
下記のオプション設定が可能
log4perl.appender.<appender ID>.filename = <ログファイル名>
log4perl.appender.<appender ID>.mode = append | clobber | pipe # デフォルトはappend
log4perl.appender.<appender ID>.umask = mask permission # デフォルトは0222
log4perl.appender.<appender ID>.owner = <ファイル所有者>
log4perl.appender.<appender ID>.group = <ファイル所有グループ>
log4perl.appender.<appender ID>.utf8 = 0|1
Log::Dispatch::Email::MailSend:メールを送信する
下記のオプション設定が可能
log4perl.appender.<appender ID>.subject = <メールタイトル>
log4perl.appender.<appender ID>.to = <送信先アドレス>
log4perl.appender.<appender ID>.from = <送信元アドレス>
Log::Dispatch::FileRotate:ローテートファイルに出力する
下記のオプション設定が可能
log4perl.appender.<appender ID>.size = <ログファイルサイズ> # このサイズを超えるとローテートされる
log4perl.appender.<appender ID>.max = <ログファイル世代数>
log4perl.appender.<appender ID>.filename = <ログファイル名>
log4perl.appender.<appender ID>.mode = write | append
Log::Dispatch::Syslog:syslogに出力する
下記のオプション設定が可能
log4perl.appender.<appender ID>.facility = auth | cron | daemon | syslog |
user | etc..
log4perl.appender.<appender ID>.ident = <syslogに記録する識別子>
== Module Method ==
Log::Log4perl->init($conf_filename);
設定ファイルを読み込む
インラインで書かれたconfigurationを読み込むこともできる。
my $l4p = q (
log4perl.logger.mail=ALL,mail
log4perl.appender.mail=Log::Dispatch::Syslog
log4perl.appender.mail.layout=SimpleLayout
log4perl.appender.mail.facility=user
);
Log::Log4perl->init(\$l4p);
my $logger = Log::Log4perl->get_logger($module);
$moduleに対するインスタンスを生成する。$moduleは、設定ファイルのlog4perl.logger.<module>に指定したモジュール名。存在しなければ、log4perl.rootLoggerの設定が使われる。
ログを出力する
$logger->trace("..."); # Log a trace message
$logger->debug("..."); # Log a debug message
$logger->info("..."); # Log a info message
$logger->warn("..."); # Log a warn message
$logger->error("..."); # Log a error message
$logger->fatal("..."); # Log a fatal message
mainパッケージでuse openプラグマを使用してもLog4perlの出力には影響が及ばないので、文字セット変換が必要な場合は、事前に変換しなければならない。
ログレベルを調べる
$logger->is_trace() # True if trace messages would go through
$logger->is_debug() # True if debug messages would go through
$logger->is_info() # True if info messages would go through
$logger->is_warn() # True if warn messages would go through
$logger->is_error() # True if error messages would go through
$logger->is_fatal() # True if fatal messages would go through
die,carpなどと併用する
$logger->logwarn("..."); # $logger->warn() && warn()
$logger->logdie("..."); # $logger->fatal() && die()
$logger->error_warn("..."); # $logger->error() && warn()
$logger->error_die("..."); # $logger->error() && die()
$logger->logcarp("..."); # $logger->warn() && carp()
$logger->logcluck("..."); # $logger->warn() && cluck()
$logger->logcroak("..."); # $logger->fatal() && croak()
$logger->logconfess("..."); # $logger->fatal() && confess()