2016-09-23 2 views

ответ

4

В вашем примере вы не указали, каковы типы appenders1 и append2, но это важно, когда вы используете файл свойств. Скажем, appenders определяются следующим образом:

appender.console.type = Console 
appender.console.name = append1 
... 
appender.rolling.type = RollingFile 
appender.rolling.name = append2 
... 

Лесорубы должно быть что-то вроде этого:

logger.console.name = com.x 
logger.console.level = debug 
logger.console.additivity = false 
logger.console.appenderRef.console.ref = append1 

logger.rolling.name = com.x 
logger.rolling.level = debug 
logger.rolling.additivity = false 
logger.rolling.appenderRef.rolling.ref = append2 

Я предлагаю эту конфигурацию в зависимости от свойств файла пример конфигурации в manual. Я не делаю этого и предпочитаю формат xml. Я рекомендую рассмотреть возможность перехода в формат xml. Большинство примеров в документации log4j2 предназначены для формата конфигурации xml. В случае XML, конфигурация лесозаготовителей много компактна и так же, как это:

<Loggers> 
    <Logger name="com.x" level="debug" additivity="false"> 
     <appenderRef ref="append1" /> 
     <appenderRef ref="append2" /> 
    </Logger> 
    ... 
</Loggers> 
+0

Я согласен с тем, что конфигурация Log4j 2 XML намного проще и лучше документирована, чем Log4j 1.2. Большинство примеров документов используют XML, поэтому при использовании формата конфигурации XML будет намного проще решать проблемы (найти похожие конфигурации, получить поддержку). –

+0

ОК спасибо, поэтому в вашем среднем блоке вы добавляете два приложения к одному/тому же журналу, верно? –

+0

Да. Таким образом вы можете добавить несколько приложений для одного и того же регистратора. Вы можете предоставить другой loglevel для определенного appenderRef. – asch

0

Я знаю, что это довольно старый вопрос, но я нашел решение, используя следующий синтаксис (используя пример):

logger.com.x.appenderRef.app1.ref = append1 
logger.com.x.appenderRef.app2.ref = append2 

Таким образом, все прошло отлично.