Я пытаюсь использовать переменную среды ($mode) в моем logbook-spring.xml, как показано ниже, но logback не может ее прочитать:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="30 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<property name="LOG_PATH" value="../logs/${mode}"/>
<property name="LOG_ARCHIVE" value="${LOG_PATH}/archive"/>
<timestamp key="timestamp-by-second" datePattern="yyyyMMdd'T'HHmmss"/>
<timestamp key="timestamp-by-day" datePattern="yyyyMMdd"/>
<appender name="Trace-Appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/emrTrace_${mode}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_ARCHIVE}/emrTrace_${mode}.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date{HH:mm:ss.SSS} [%t] %msg%n</pattern>
<outputPatternAsHeader>true</outputPatternAsHeader>
</encoder>
</appender>
<logger name="com.itreatmd.emr.Debug" level="finest" additivity="false">
<appender-ref ref="Trace-Appender"/>
</logger>
</configuration>
Я запускаю исполняемый файл jar как:
java -jar EmrServices-1.0-SNAPSHOT.jar --mode=prod
Для свойства «LOG_PATH» установлено значение «logs/mode_IS_UNDEFINED».
Таким образом, когда я перебираю переменные среды в программе, я вижу «режим» среди переменных. Это означает, что приложение знает о переменной. Но судя по всему, логбэка нет.
Я использую Spring 2.1.10. Я не видел этой проблемы в более старых версиях Springboot (1.3)
Изменить: я думаю, что причина этого в том, что журнал инициализируется до Spring, но я понятия не имею, что я могу с этим поделать.