2 つのアペンダー (1 つの画面と他のファイル) を持つロガーがあります。変更可能な可変ログレベルを備えた画面アペンダーと、何があってもすべてをログに記録するファイルアペンダーが必要です。したがって、たとえば、画面への出力を無効にすることができます (Screen アペンダー) が、ログファイル (ファイル アペンダー) で TRACE のレベルまでの完全なログを取得できます。Screen アペンダーの変更には成功しましたが、同じロガーの File アペンダーを TRACE のレベルに設定できません。さまざまなしきい値設定を使用してみましたが、成功しませんでした。
# Define a category logger
my $log = Log::Log4perl->get_logger("main");
# Define a layout
my $layout = Log::Log4perl::Layout::PatternLayout->new("[%d{yyyy/MM/dd HH:mm:ss,SSS}]%m%n");
# Define a file appender
my $file_appender = Log::Log4perl::Appender->new(
"Log::Log4perl::Appender::File",
name => "Logfile",
filename => "$logfile",
autoflush => 1,
umask => 022,
header_text => "INVOCATION:$0 @ARGV",
#Threshold => "TRACE", DOES NOT WORK
);
# Define a stderr appender
my $stderr_appender = Log::Log4perl::Appender->new(
"Log::Log4perl::Appender::ScreenColoredLevels",
name => "Screen",
stderr => 1,
);
# Have both appenders use the same layout (could be different)
$stderr_appender->layout($layout);
$file_appender->layout($layout);
#add both appenders to logger
$log->add_appender($stderr_appender);
$log->add_appender($file_appender);
#add a level to logger
#$log_level coming from command line or configuration
$log->level($log_level);
#$file_appender->threshold( "TRACE" ); THIS DOES NOT WORK
#Log::Log4perl->appender_thresholds_adjust(-1, ['Logfile']); NOR THIS
#check your appenders
#print Dumper( Log::Log4perl->appenders() );