Perlでログの確認2
log4perl
ファイル出力のログのテスト
設定
confファイル編集
log4perl.logger.develop = DEBUG, Print log4perl.appender.Print = Log::Log4perl::Appender::File log4perl.appender.Print.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.Print.layout.ConversionPattern = %d [%p] %m %F at %L.%n log4perl.appender.Print.filename = ./app.log
※Log::Log4perl::Appender::Fileを指定してfilenameにログファイルを指定
スクリプトはそのまま
#!/usr/bin/env perl use strict; use warnings; # 宣言 use Log::Log4perl; # conf Log::Log4perl::init("./log4perl2.conf"); # logger my $logger = Log::Log4perl->get_logger('develop'); # ログ出力 $logger->debug("sample test1"); $logger->warn("sample test2"); $logger->fatal("sample test3");
結果
[root@localhost log]# cat app.log 2013/12/04 22:08:17 [DEBUG] sample test1 sample04.pl at 16. 2013/12/04 22:08:17 [WARN] sample test2 sample04.pl at 17. 2013/12/04 22:08:17 [FATAL] sample test3 sample04.pl at 18. [root@localhost log]#
できた…
ローテートできんのかな?
cpanm
[root@localhost log]# cpanm Log::Dispatch::FileRotate [root@localhost log]# cpanm Log::Dispatch::File::Rolling [root@localhost log]#
インストールする
confファイル編集
log4perl.rootLogger = INFO, Print log4perl.logger.develop = TRACE, Print log4perl.additivity.develop = 0 log4perl.appender.Print.Threshold = TRACE log4perl.appender.Print = Log::Dispatch::File::Rolling log4perl.appender.Print.name = file log4perl.appender.Print.mode = append log4perl.appender.Print.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.Print.layout.ConversionPattern = %d [%p] %m %F at %L.%n log4perl.appender.Print.filename = debug-%d{yyyyMMdd}.log
ソースは前と同じ
#!/usr/bin/env perl use strict; use warnings; # 宣言 use Log::Log4perl; # conf Log::Log4perl::init("./log4perl3.conf"); # logger my $logger = Log::Log4perl->get_logger('develop'); # ログ出力 $logger->debug("sample test1"); $logger->warn("sample test2"); $logger->fatal("sample test3");
結果
[root@localhost log]# ll *.log -rw-r--r-- 1 root root 0 12月 4 23:55 2013 debug-%d{yyyyMMdd}.log -rw-r--r-- 1 root root 179 12月 4 23:55 2013 debug-20131204.log [root@localhost log]# [root@localhost log]# cat debug-20131204.log 2013/12/04 23:55:45 [DEBUG] sample test1 sample05.pl at 16. 2013/12/04 23:55:45 [WARN] sample test2 sample05.pl at 17. 2013/12/04 23:55:45 [FATAL] sample test3 sample05.pl at 18. [root@localhost log]# [root@localhost log]#
※???なんか変なのがある???
まとめ
- ファイル出力はできる
- 別名の日付へ出力も可能
- でもなんかゴミ?ファイルができちゃう…