m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

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]#

※???なんか変なのがある???

まとめ

  • ファイル出力はできる
  • 別名の日付へ出力も可能
  • でもなんかゴミ?ファイルができちゃう…
※2時間以上いろいろ見てたけどいい方法がわからんのでここまでにする。