Мне нужно настроить макет приложения Log4j2, используя переменную, указанную при запуске приложения. По сути, в соответствии с заданной c рабочей средой мне нужно использовать макет или другой.
В настоящее время я использую конфигурацию XML со следующей настройкой.
- Я определил переменную env с именем LAYOUT , имеющую тип макета в качестве значения (например:
CustomLayout
); - В файле
log4j2.xml
я определил следующего аппендера:
<Appender type="Console" name="ConsoleAppender">
<PatternLayout type="${env:LAYOUT}" />
</Appender>
Однако при каждом запуске приложения я получаю следующее сообщение:
ERROR Console contains an invalid element or attribute "${env:LAYOUT}".
Увы, в других разделах того же XML механизм поиска ${env:}
работает правильно, например, здесь:
<Root level="${env:ROOT_LOG_LEVEL:-DEBUG}">
<AppenderRef ref="ConsoleAppender" />
</Root>
Мне кажется, что механизм поиска свойств Log4j не работает с атрибутом type
. Что я делаю неправильно? Это потому, что атрибут type
имеет разное время разрешения?