5

プロジェクトで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のデバッグメッセージはまだ端末に出力されます。何故ですか?そして、私はここで何が間違っているのですか?

4

2 に答える 2

4

私はあなたが意味すると思います

    $log->get_logger("Net::Amazon")->level($OFF)
于 2009-10-22T17:05:05.773 に答える
3

人間の愚かさによって引き起こされた問題は解決しました。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.");
于 2009-10-22T20:40:40.870 に答える