Логирование ошибок в stderr и debug, информации в stdout с помощью log4j

Я хочу добавить логирование в приложение, которое я разрабатываю, используя apache log4j. На данный момент я хочу перенаправить все сообщения журнала уровня INFO и ниже (TRACE, DEBUG) в stdout, а все остальные сообщения журнала от WARN и выше (ERROR, FATAL) в stderr. Например:

...
logger.info("Processing at some point"); // must be written to stdout
logger.debug("Point x was processed"); // must be written to stdout
logger.warn("Incorrect point config"); // must be written only to stderr
logger.error("Exception occurred at point x"); // must be written only to stderr

Итак, каким должен быть мой файл log4j.properties? Вот как он выглядит в данный момент:

log4j.rootLogger=DEBUG, stdout, stderr

# configure stdout
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.Target   = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n

# configure stderr
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stderr = org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold = WARN
log4j.appender.stderr.Target   = System.err
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n

Проблема с приведенной выше конфигурацией в том, что logger.error() ... тоже выводится на stdout.

54
задан Raedwald 8 May 2014 в 05:35
поделиться