Log4Perl でファイルとメールにログを残す
log4perl でファイルにログを残すのと、任意のレベル以上のエラーが発生した場合はメールを送信するように設定する。
簡易な設定ファイルの内容
log4perl.rootLogger = DEBUG, LogAppender, MAILER log4perl.appender.LogAppender = Log::Log4perl::Appender::File log4perl.appender.LogAppender.filename = /this/is/a/log4perl/setting/file/path.conf log4perl.appender.LogAppender.mode = append log4perl.appender.LogAppender.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.LogAppender.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %F(%L) %M [%p] %m %n log4perl.appender.MAILER.Threshold = FATAL log4perl.appender.MAILER = Log::Dispatch::Email::MailSend log4perl.appender.MAILER.to = reciever@example.com log4perl.appender.MAILER.from = sender@example.com log4perl.appender.MAILER.subject = [FATAL] This is a test mail. log4perl.appender.MAILER.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.MAILER.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %F(%L) %M [%p] %m %n
「log4perl.rootLogger = DEBUG, LogAppender, MAILER」に記述している LogAppender はログをファイルに出力するための ID 名で、MAILER はログをメールで送信するための ID 名。
メールでログのエラーレベルを設定しているのは、「log4perl.appender.MAILER.Threshold」。
perl の記述例
#!/usr/bin/env perl use strict; use warnings; use utf8; use Log::Log4perl; Log::Log4perl->init('/this/is/a/log4perl/setting/file/path.conf'); my $logger = Log::Log4perl->get_logger(); $logger->fatal('This is a test message as fatal error.');
依存するモジュール
明記されていなかったが、実行時に下記のモジュールが必要だというエラーが出た。
実際に送信されるメールの内容
下記のようなメールが送られる。
From: sender@example.com To: reciever@example.com 日付: 2010年2月19日12:54 件名: [FATAL] This is a test mail. 2010-02-19 12:54:46 ./log.pl(10) main:: [FATAL] This is a test message as fatal error.