Как определить глобальный PatternLayout для log4j2?

Можно ли определить (имя) PatternLayout в файле конфигурации log4j2.xml?

<?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. Могу ли я определить его как-то глобально с помощью имени, а затем просто использовать ссылку на имя, чтобы установить шаблон для каждого приложения?


person membersound    schedule 07.01.2014    source источник
comment
Вы также можете взглянуть на использование свойства в log4j2.xml в вопросе, опубликованном здесь.   -  person Joe    schedule 07.01.2014


Ответы (2)


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

В данном случае я определяю свойство 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>
person Stéphane B.    schedule 27.08.2015

Нашел это:

определять:

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

использовать:

   <RollingFile fileName="${path}mylog.log"
person membersound    schedule 07.01.2014
comment
Как это связано с вопросом? - person bruno; 10.06.2015
comment
Ну, вопрос был: как определить глобальные свойства. Мой ответ: как определить глобальное свойство;) - person membersound; 11.06.2015
comment
О, теперь я понял. Я предложил отредактировать ответ, чтобы использовать код из примера в вопросе, чтобы связь стала ясной. - person bruno; 11.06.2015