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

Ответ 1

Найдено:

определить:

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

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

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

Ответ 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>