log4perlで作成されるログファイルのサイズを制限したい。ログファイルが約100MBを超えないようにします。最後の100MB(またはその前後)のデータのみが必要です。理想的には、以前のデータを切り捨てて、最後のビットのみを保持します。Log :: Dispatch :: FileRotateモジュールを認識していますが、複数のログファイルが必要ないため、要件を完全には満たしていません。
これは可能ですか?
以下のインライン構成を含む完全なコード(useステートメントを除く):
my $log_conf = q/
log4perl.category = DEBUG, Logfile
log4perl.appender.Logfile = Log::Dispatch::FileRotate
log4perl.appender.Logfile.filename = sub { return get_log_fn(); }
log4perl.appender.Logfile.mode = truncate
log4perl.appender.Logfile.autoflush = 1
log4perl.appender.Logfile.size = 104857600
log4perl.appender.Logfile.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.Logfile.layout.ConversionPattern = %d %P %M(%L) %p %m %n
/;
Log::Log4perl::init( \$log_conf );
my $logger = Log::Log4perl::get_logger();
INFO "Starting $0";
my $upper = 100000000;
for(my $i=0;$i < $upper;$i++) {
DEBUG $i;
}
sub get_log_fn
{
use File::Basename;
return sprintf "%s.log", basename( $0, '.pl' );
}