Вот что я пытаюсь сделать: я хочу 2 файла журнала: первый регистрирует уровень INFO и выше для всех частей приложений, но также регистрирует DEBUG и некоторые пакеты. Второй только регистрирует ОШИБКУ и все пакеты. Я уверен, что это, вероятно, тривиально, но я не могу понять это. Вот файл конфигурации, который я сейчас использую:
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 разных регистратора)?