У меня есть регистратор с двумя приложениями (один экран и другой файл). Я хочу иметь приложение Screen с уровнем журнала переменных, который можно изменить, и File appender, который будет регистрировать все независимо от того, что. Так, например, вы можете отключить любой вывод на экране (Screen appender), но получить полный вход на уровень TRACE в вашем файле журнала (File appender). Мне удалось изменить приложение Screen appender, но я не могу установить File appender для того же регистратора на уровень TRACE. Я пробовал использовать разные настройки порога, но без успеха.Как установить два приложения с разными уровнями журнала в Log :: Log4perl?
# 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());
Я изменил свой пример, чтобы работать с моим USECASE, например, мне нужно LevelRange вместо LevelMatch и корневой регистратор должен быть установленным на уровне TRACE. log4perl.category.main = TRACE, Logfile, экран # Фильтр диапазон от следовых до log4perl.filter.MatchTraceUp = Вход :: Log4perl :: Filter :: LevelRange log4perl.filter.MatchTraceUp.LevelMin = TRACE log4perl .filter.MatchTraceUp.LevelMax = FATAL log4perl.filter.MatchTraceUp.AcceptOnMatch = true – mocnii