【问题标题】:How can I suppress output to stdout and stderr in Log4perl?如何在 Log4perl 中抑制输出到 stdout 和 stderr?
【发布时间】:2009-08-21 10:29:17
【问题描述】:

我有这个子来初始化我的记录器:

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);
}

我只想在我的日志文件中有日志信息。 我如何防止它记录到标准输出?

【问题讨论】:

  • 我也想知道,只是在 log4j 中。

标签: perl stdout log4perl


【解决方案1】:

我找到了。 我必须将此行添加到我的子:

$userlogger->additivity(0);

我在这里找到了答案:log4perl FAQ

【讨论】:

    【解决方案2】:

    Log::Log4perl->easy_init() 使用 ScreenAppender 初始化库,这就是将日志发送到标准输出的原因。

    删除它并添加以下内容以将所有日志(调试级别及以上)写入文件:

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

    【讨论】:

    • 我认为这在我的代码中不好。我使用的是DEBUG级别,所以设置阈值来阻止DEBUG是不行的。但感谢您的回答。
    • 我忘了说easy_init() 调用必须被移除;这不会阻止调试。无论如何,如果 additivity() 可以解决问题,那很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多