Perlでログの確認
アプリケーションログ
処理中になんの処理を行ったかを確認するのでログを出力する方法を調査
一番しょぼい方法
warnを使用する
#!/usr/bin/env perl use strict; use warnings; # logテスト warn "log test"; warn "log test2"; warn "log test3";
結果
[root@localhost log]# perl sample01.pl log test at sample01.pl line 7. log test2 at sample01.pl line 9. log test3 at sample01.pl line 12. [root@localhost log]#
とりあえず、最低限時間とログのレベルなどは欲しいので項目を追加
情報加工
#!/usr/bin/env perl use strict; use warnings; # logテスト log_output("INFO", "sample test1"); log_output("INFO", "sample test2"); log_output("WARN", "sample warning test1"); # ログ sub log_output{ my ($level, $message) = @_; # ログの指定レベルとメッセージを引数として取得 my ($pkg, $file, $line) = caller; # 呼び出し元の情報を取得 my @time = localtime; # 時間 my $output = sprintf( "%04d-%02d-%02d %02d:%02d:%02d [%s] %s %s line %d.\n", $time[5] + 1900, $time[4]+1, $time[3], $time[2], $time[1], $time[0], $level, $message, $file, $line ); warn $output; }
確認2
[root@localhost log]# perl sample02.pl 2013-12-04 06:46:51 [INFO] sample test1 sample02.pl line 7. 2013-12-04 06:46:51 [INFO] sample test2 sample02.pl line 9. 2013-12-04 06:46:51 [WARN] sample warning test1 sample02.pl line 11. [root@localhost log]#
さっきよりはまともになりました。
log4perl
cpanmでインストール
[root@localhost log]# cpanm Log::Log4perl [root@localhost log]#
confファイル編集(log4perl.conf)
log4perl.logger.develop = DEBUG, Screen log4perl.appender.Screen = Log::Log4perl::Appender::Screen log4perl.appender.Screen.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.Screen.layout.ConversionPattern = %d [%p] %m %F at %L.%n
スクリプト
#!/usr/bin/env perl use strict; use warnings; # 宣言 use Log::Log4perl; # conf Log::Log4perl::init("./log4perl.conf"); # logger my $logger = Log::Log4perl->get_logger('develop'); # ログ出力 $logger->debug("sample test1"); $logger->warn("sample test2"); $logger->fatal("sample test3");
結果
[root@localhost log]# perl sample03.pl 2013/12/04 07:03:25 [DEBUG] sample test1 sample03.pl at 16. 2013/12/04 07:03:25 [WARN] sample test2 sample03.pl at 17. 2013/12/04 07:03:25 [FATAL] sample test3 sample03.pl at 18. [root@localhost log]#
まとめ
自作することもcpanmパッケージでも可能なことがわかった。
なんか他にも「Log::Dispatch」などもあるがなんかやること多い感じがするので「Log::Log4perl」で対応する
ファイルに出力する方法なども調査する
参考
- 作者: 大沢和宏,cho45(さとう),小林篤,和田裕介,嶋田裕二(xaicron),牧大輔(lestrrat),奥一穂,広木大地,伊藤直也,長野雅広,藤原俊一郎,伊藤智章,まかまか般若波羅蜜,小飼弾,近藤嘉雪,中川勝樹,宮川達彦,tokuhirom,藤吾郎(gfx),村瀬大輔,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2013/07/23
- メディア: 大型本
- この商品を含むブログ (7件) を見る