У меня есть модуль perl, использующий log4perl, который использует WWW :: Mechanize :: Chrome.Когда у меня включен уровень отладки для моего модуля, я полностью завален сообщениями от зависимостей пакета mechanize, в частности, от Chrome :: DevToolsProtocol.Хотя эти сообщения могут быть полезны для некоторой отладки, я в основном хочу, чтобы мои сообщения отладки появлялись из моего собственного модуля верхнего уровня, а не всех скрытых зависимостей, которые использует мой модуль.
Я пробовал несколько разчтобы найти способ подавить их, но до сих пор пустовали.Я думал, что просто смогу создать собственный уровень журнала для Chrome :: DevToolsProtocol, но в категории сообщений отображается имя моего верхнего модуля, даже если оно исходит из зависимости, поэтому я не могу это подавить, или мои собственные сообщения будутисчезнуть тоже.Я нахожу это очень запутанным, потому что у меня в log4perl были категории, основанные на имени модуля, поэтому я не знаю, почему пакет chrome регистрируется под моей категорией модуля:
My::Package; => use WWW::Mechanize::Chrome => use Chrome::DevToolsProtocol
Messages from Chrome::DevToolsProtocol are being recorded as category 'My::Package'.
Я чувствую, что мне не хватаетнекоторое базовое понимание того, как это контролировать, но оно до сих пор ускользало от меня.Любые предложения о том, что я мог бы попробовать?
use Log::Log4perl qw(:easy);
init_logger($v); <-- verbosity level set by script options
sub init_logger {
my $verbose = shift || 0;
my $level = $INFO;
$level = $DEBUG if $verbose > 0;
$level = $TRACE if $verbose > 1;
Log::Log4perl->init("$FindBin::RealBin/../etc/log4perl.conf");
$Log::Log4perl::Logger::APPENDER_BY_NAME{Screen}->threshold($level);
return;
}
log4perl.conf:
log4perl.category = DEBUG, Screen
log4perl.category.WWW.Mechanize.Chrome = INFO, Screen
log4perl.appender.Screen = Log::Log4perl::Appender::ScreenColoredLevels
log4perl.appender.Screen.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.Screen.layout.ConversionPattern = \
%d %F{1} %L> %m %n
Сообщение на экране: 2019/02/03 10:53:13 DevToolsProtocol.pm 258> Игнорирование 'Network.dataReceived' (-: 1000019501.323)