Log4j протоколирование информационных сообщений без регистрации предупреждающих сообщений - PullRequest
1 голос
/ 23 сентября 2011

Я пытаюсь записать определенные информационные сообщения в файл, но как только я запускаю приложение, регистрируются как предупреждающие, так и информационные сообщения.Теперь, исходя из того, что я прочитал с этого сайта , вы не можете войти в систему, не зарегистрировав другую.Кто-нибудь пробовал это раньше?Если да, то как выглядел ваш файл свойств?

Мой файл свойств выглядит так:

 ***** Set root logger level to INFO and its two appenders to stdout and R.
log4j.rootLogger=INFO, stdout, R

# ***** stdout is set to be a ConsoleAppender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# ***** stdout uses PatternLayout.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# ***** Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%M has started] (%F:%L) - %m%n
/
# ***** R is set to be a RollingFileAppender.
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.R.File="folder where log will be saved"
log4j.appender.R.layout.ConversionPattern=%5p [%m has started] %c{2}.[%x] (%F:%L) %d{yyyy-MM-dd HH:mm:ss} - %m%n

# ***** R uses PatternLayout.
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%5p [%m has started] %c{2}.[%x] (%F:%L) %d{yyyy-MM-dd HH:mm:ss} - %m%n

Ответы [ 5 ]

2 голосов
/ 23 сентября 2011

AFAIK Не существует стандартного способа подавления более высоких уровней журнала, чем те, которые вас интересуют.

Однако вы можете использовать для этого пользовательский аппендер.

Это может выглядеть примерно так:

public class MyAppender extends AppenderSkeleton {
  protected void append(LoggingEvent event) {
    if( event.getLevel() == Level.INFO ) {
      //append here, maybe call a nested appender
    }
  }
}
1 голос
/ 23 сентября 2011

Уровень журнала WARN выше, чем INFO , а конфигурация регистрации определяет пороговый уровень минимальный , который должен регистрироваться приложением.Таким образом, все сообщения выше этого уровня также будут регистрироваться.

Следовательно, ожидаются сообщения WARN.И я не думаю, что вы можете настроить его так, как вы хотите.

0 голосов
/ 23 сентября 2011

Насколько я понимаю, расширенные фильтры, такие как LevelMatchFilter и LevelRangeFilter , могут помочь вам.

Следует помнить, что для их использования может потребоваться конфигурация xml вместо свойств: Невозможно установить LevelRangeFilter для log4j

0 голосов
/ 23 сентября 2011

Почему вы хотите отфильтровать уровень WARN? Как сказал Пешкира, вы можете использовать два разных регистратора для разделения / фильтрации выходных данных журнала, или вы можете использовать такие инструменты, как grep для фильтрации (в автономном режиме), или вы можете просто удалить журналы WARN из своего кода, если они вам не нужны в любом случае.

0 голосов
/ 23 сентября 2011

Если сообщения WARN, которые не должны быть напечатаны, приходят из пакета, отличного от сообщений INFO, вы можете определить другие уровни журнала для этих пакетов.Первый может указывать уровень ERROR, а второй INFO

он должен выглядеть примерно так: log4j.logger.com.test.something = ERROR log4j.logger.com.other.package = INFO

ура

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...