Как я могу подавить вывод на стандартный вывод и стандартный вывод в Log4perl?

У меня есть эта подсистема для инициализации моего регистратора:

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

Я только хочу иметь логин в моем лог-файле. Как предотвратить запись этого в стандартный вывод?


person Allan Simonsen    schedule 21.08.2009    source источник
comment
Мне интересно то же самое, только в log4j.   -  person Ezombort    schedule 21.08.2009


Ответы (2)



Log::Log4perl->easy_init() инициализирует библиотеку с помощью ScreenAppender, поэтому журнал отправляется на стандартный вывод.

Удалите его и добавьте следующее, чтобы записать все журналы (уровень отладки и выше) в файл:

 Log::Log4perl->get_logger()->level($DEBUG);
person philant    schedule 21.08.2009
comment
Я не думаю, что это хорошо в моем коде. Я использую уровень DEBUG, поэтому не стоит устанавливать порог для блокировки DEBUG. но спасибо за ответ. - person Allan Simonsen; 21.08.2009
comment
Я забыл упомянуть, что вызов easy_init() должен быть удален; и это не блокирует DEBUG. В любом случае, если аддитивность() помогает, это нормально. - person philant; 21.08.2009