Подавление сообщений сторонних библиотек в log4perl - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть модуль 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...