我想在项目中使用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的消息仍然会打印到终端。这是为什么?我在这里做错了什么?
答案 0 :(得分:3)
我认为你的意思是
$log->get_logger("Net::Amazon")->level($OFF)
答案 1 :(得分:2)
问题解决了,由人类的愚蠢造成的。在使用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.");