tetsunosukeのnotebook

tetsunosukeのメモです

log4perlでrotate

"リクエスト"があったので調べてみる。
まだメモ段階。

  1. Log::Dispatchを入れないといけない
  2. Log::Dispatch::FileRotateをいれないといけない

設定ファイルの書き方は多分こう。(前回のに追加してみた)

log4perl.logger.mylogger = DEBUG, FileAppndr1, Rolling
log4perl.appender.FileAppndr1      = Log::Log4perl::Appender::File
log4perl.appender.FileAppndr1.filename = debug.log
log4perl.appender.FileAppndr1.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.FileAppndr1.layout.ConversionPattern = %d %F(%L) [%p] %m %n
log4perl.appender.Rolling=Log::Log4perl::JavaMap::RollingFileAppender
log4perl.appender.Rolling.File=roll.log

なんかコケるんですけどっ!!

Can't use string ("debug") as a HASH ref while "strict refs" in use at C:/Perl/site/lib/Log/Log4perl/JavaMap/RollingFileAppender.pm line 12.

ってことでConfigを書き直した。
http://search.cpan.org/~mschilli/Log-Log4perl-1.02/lib/Log/Log4perl.pmに、log4jって書いてあるのに勝手にperlにしたのがイケナイらしい。

log4perl.logger.mylogger=DEBUG,R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=roll.log
log4j.appender.R.layout = Log::Log4perl::Layout::PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %c - %m%n

んで、
http://search.cpan.org/~mschilli/Log-Log4perl-1.04/lib/Log/Log4perl/JavaMap/RollingFileAppender.pmを見ると、

Possible config properties for Log::Dispatch::FileRotate are

    filename
    mode  "write|append"
    autoflush 0|1
    size
    max

ってことらしいんで、ためしに以下を加えた。
(この辺わかりにくいなー。)

log4j.appender.R.size=20
log4j.appender.R.max=10

三回くらい実行してみたら

2006/04/21  16:31                40 roll.log
2006/04/21  16:31                38 roll.log.1
2006/04/21  16:31                40 roll.log.2
2006/04/21  16:31                38 roll.log.3
2006/04/21  16:31                40 roll.log.4
2006/04/21  16:31                38 roll.log.5

確かにrotateされてるよ!