Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何禁用特定类的Log4perl输出?_Perl_Logging_Log4perl - Fatal编程技术网

如何禁用特定类的Log4perl输出?

如何禁用特定类的Log4perl输出?,perl,logging,log4perl,Perl,Logging,Log4perl,我希望在项目中使用Log4perl,但对某个类禁用它(在本例中是Net::Amazon)。我原以为这很容易,但不知何故我失败了 我试着用 use Log::Log4perl (:easy_init); use Net::Amazon; my $amz = Net::Amazon->new( ... ); my $log = Log::Log4perl->easy_init($DEBUG); $log = $log->get_logger("Net::Amazon"); $lo

我希望在项目中使用Log4perl,但对某个类禁用它(在本例中是Net::Amazon)。我原以为这很容易,但不知何故我失败了

我试着用

use Log::Log4perl (:easy_init);
use Net::Amazon;

my $amz = Net::Amazon->new( ... );
my $log = Log::Log4perl->easy_init($DEBUG);
$log = $log->get_logger("Net::Amazon");
$log->level($OFF);

$log = $log->get_logger(__PACKAGE__);
$log->info("Hello World.");
不幸的是,Net::Amazon的调试消息仍然打印到终端上。为什么呢?我做错了什么?我想你是说

    $log->get_logger("Net::Amazon")->level($OFF)

问题解决了,是人类的愚蠢造成的。在使用get_logger获取当前包后,忘记保存该包的记录器。以下示例按预期工作:

use Log::Log4perl (:easy);
use Net::Amazon;

my $amz = Net::Amazon->new( ... );
Log::Log4perl->easy_init($DEBUG);
$log = get_logger("Net::Amazon");
$log->level($OFF);

$log = $log->get_logger(__PACKAGE__);
$log->info("Hello World.");

你是对的,我不小心忘了在设置级别之前保存记录器。我据此编辑了这篇文章。但是,问题仍然存在。在示例代码的末尾,您将
$log
设置回logger for PACKAGE,因此我们应该希望记录“Hello world”。如果移动
$log->info()
回调一行会发生什么?