2009-08-21 105 views
4

我有這樣子來初始化我的記錄:如何在Log4perl中將輸出壓縮到stdout和stderr?

sub initLogfiles{ 
    Log::Log4perl->easy_init($INFO); # We log all debug, info, warn, error and fatal messages. 
     my $userlogappender = Log::Log4perl::Appender->new(
     "Log::Log4perl::Appender::File", 
     filename => USERLOGFILE, 
     mode  => "append", 
     recreate => 1 
    ); 
    my $userloglayout = Log::Log4perl::Layout::PatternLayout->new("%d;%m%n"); 
    $userlogappender->layout($userloglayout); 
    $userlogger->add_appender($userlogappender); 
} 

我只希望在我的日誌文件的LOGINFO。 我如何防止記錄到標準輸出?

+0

我想知道的一樣,只是在log4j的。 – Ezombort 2009-08-21 10:40:04

回答

6

我發現了它。 我不得不將此行添加到我的子:

$userlogger->additivity(0); 

我找到了答案在這裏:log4perl FAQ

5

Log :: Log4perl-> easy_init()使用ScreenAppender初始化庫,這就是日誌發送到stdout的原因。

刪除,並添加以下寫的所有日誌(調試級別及以上)到文件:

Log::Log4perl->get_logger()->level($DEBUG); 
+0

我不認爲在我的代碼中是好的。我使用DEBUG級別,所以它不會設置阻止DEBUG的閾值。但謝謝你的答案。 – 2009-08-21 11:50:12

+1

我忘了提及easy_init()調用必須被刪除;這並沒有阻止DEBUG。無論如何,如果additivity()可以做到這一點,那很好。 – philant 2009-08-21 12:08:36