2014-01-07 1 views
14

Возможно ли определить (названный) PatternLayout в файле конфигурации log4j2.xml?Как определить глобальный шаблонLayout для log4j2?

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration status="ERROR"> 
    <appenders> 
     <Console name="CONSOLE" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" /> 
     </Console> 

     <File name="DEBUG_FILE" fileName="debug.txt"> 
     <PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" /> 
     </File> 
    </appenders> 

    <loggers> 
     <root level="trace"> 
     <appender-ref ref="CONSOLE" /> 
     <appender-ref ref="DEBUG_FILE" /> 
     </root> 
    </loggers> 

</configuration> 

В этом примере PatternLayout повторяется. Могу ли я определить его как-то глобально с именем, а затем просто использовать ссылку на имя для установки шаблона для каждого приложения?

+0

Вы также можете взглянуть на использование собственности в log4j2.xml в вопросе публикуемого [здесь] (https: // StackOverflow. ком/вопросы/20819376/log4j2-rollingfile-Appender-надстройку на заказ-инфо-на-на-старт-оф-каждый-логфайл/20979314 # 20979314). – Joe

ответ

3

Нашел:

определяют:

<Properties> 
     <property name="path">c:/logs/</property> 
    </Properties> 

использование:

<RollingFile fileName="${path}mylog.log" 
+0

Как это связано с вопросом? – bruno

+0

Ну, вопрос в том, как определить глобальные свойства. Мой ответ: как определить свойство gobal;) – membersound

+0

О, теперь я понял. Я предложил изменить ответ на использование кода из примера в вопросе, поэтому соединение становится ясным. – bruno

7

Согласно официальному documentation, вы можете определить "свойство" и др повторно его значение.

В этом случае я определяю свойство «appenderPatternLayout».

Здесь полный код (протестировано с Log4J 2.3):

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 

    <Properties> 
     <Property name="appenderPatternLayout">%d %-5p %C{2} (%F:%L) - %m%n</Property> 
    </Properties> 

    <Appenders> 
     <Console name="CONSOLE" target="SYSTEM_OUT"> 
      <PatternLayout pattern="${appenderPatternLayout}" /> 
     </Console> 
     <File name="DEBUG_FILE" fileName="debug.txt"> 
      <PatternLayout pattern="${appenderPatternLayout}" /> 
     </File> 
    </Appenders> 

    <Loggers> 
     <Root level="trace"> 
      <AppenderRef ref="CONSOLE" /> 
      <AppenderRef ref="DEBUG_FILE" /> 
     </Root> 
    </Loggers> 
</Configuration>