我正在尝试在我的 logbook-spring.xml 中使用环境变量 ($mode),如下所示,但 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”
因此,当我在程序中遍历我的环境变量时,我确实在变量中看到了“模式”。这意味着应用程序知道该变量。但显然,logback 不是。
我正在使用 Spring 2.1.10。我在 Springboot (1.3) 的旧版本中没有看到这个问题
编辑:我认为这是因为 logback 在 Spring 之前初始化,但我不知道我能做些什么。