Вот что я пытаюсь сделать: мне нужны 2 файла журнала: первый регистрирует уровень INFO и выше для всех частей приложений, но также регистрирует DEBUG и выше для некоторых пакетов. Второй регистрирует только ERROR и выше для всех пакетов. Я уверен, что это, вероятно, тривиально, но я не могу этого понять. Вот файл конфигурации, который я сейчас использую:
log4j.rootLogger=INFO,console,R
#console appender
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %t %-5p %c{2} - %m%n
#file appender
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern = '.'yyyy-MM-dd
log4j.appender.R.File = log/log.txt
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = [%d{ISO8601}]%5p%6.6r[%t]%x(%F:%L) - %m%n
#Specific log levels
log4j.category.com.mypackage1=DEBUG
log4j.category.com.mypackage2=DEBUG
Очевидно, здесь нет части журнала ошибок. Моя основная идея заключалась в том, чтобы добавить еще один аппендер и установить для него уровень журнала ERROR, но категории, похоже, переопределяют его, а также их информацию, а это не то, что я хочу. Причина, по которой они есть, заключается в том, что другие пакеты сбрасывают много информации, которая нам не нужна при настройке отладки, и именно так мы это обходим. Я думаю, что может быть лучший общий подход к этому, но это мой первый файл конфигурации log4j.
ОБНОВЛЕНИЕ: сотрудник предложил использовать 2 регистратора, как указано в сообщении, на которое kdgregory ссылается в своем комментарии (Другой макет log4j для отладки и ошибки?). Люди думали, что это плохая идея, но никто так и не объяснил почему. Это кажется немного взломанным, но он делает то, что нам нужно. Каковы основные причины не использовать этот метод (кроме необходимости поддерживать 2 разных регистратора)?