2009-08-21 107 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