



ログファイル出力スキームを提供する
use Log::Log4perl;
パッケージをロードする。
== 設定ファイルの書式 ==
log4perl.rootLogger=<LEVEL>,<appenderID>,…
log4perl.logger.<module>=<LEVEL>,<appenderID>,…
log4perl.appender.<appenderID>=<appender module>
log4perl.appender.<appenderID>.layout=[SimpleLayout | PatternLayout]
log4perl.appender.A1.layout.ConversionPattern=<pattern>
== Appender Module ==
Log::Log4perl::pender::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..
== 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()