4

私は私のロガーを初期化するためにこのサブを持っています:

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を入れたいだけです。これがstdoutにログに記録されないようにするにはどうすればよいですか?

4

2 に答える 2

6

見つけた。この行をサブに追加する必要があります。

$userlogger->additivity(0);

私はここで答えを見つけました:log4perl FAQ

于 2009-08-21T11:47:44.093 に答える
5

Log :: Log4perl-> easy_init()は、ScreenAppenderを使用してライブラリを初期化します。そのため、ログはstdoutに送信されます。

それを削除し、以下を追加して、すべてのログ(デバッグレベル以上)をファイルに書き込みます。

 Log::Log4perl->get_logger()->level($DEBUG);
于 2009-08-21T11:43:59.297 に答える