Я использую поиск SystemPropertiesLookup для настройки моей конфигурации Log4J2.Системные свойства устанавливаются в первой строке моего основного метода.Проблема в том, что когда Log4J загружает конфигурацию, основной метод еще не вызывается, и поэтому системные свойства еще не заполнены.
Вот мой log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" packages="org.base">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%d [%c{1}] %-5level: %msg%n}{STYLE=Logback}"/>
</Console>
<File name="AppLog" fileName="logs/app-${sys:MIGRATION_ENV:-UNKNOWN}-${sys:MIGRATION_TITLE:-UNKNOWN}.log" append="false">
<PatternLayout pattern="%d [%c{1}] %-5level: %msg%n"/>
</File>
</appenders>
<loggers>
<root level="error">
<appender-ref ref="Console" level="error"/>
<appender-ref ref="AppLog" level="error"/>
</root>
<logger name="org.base" level="debug" additivity="false">
<appender-ref ref="Console" level="debug"/>
<appender-ref ref="AppLog" level="debug"/>
</logger>
</loggers>
</configuration>
Файл будет называться app-UNKNOWN-UNKNOWN, потому что когда Log4J заполняет его, свойства еще не доступны.
Есть ли способ заставить Log4J ждать, желательно без переноса конфигурации в код Java?
Свойства должны быть установлены во время выполнения (первая строка основного метода).
Возможным решением может быть только вызов getLogger(..)
ПОСЛЕ этого метода вместо его инициализации с помощьюпеременная, но она не совсем подходит для моей задачи.