0

我正在尝试在我的 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 之前初始化,但我不知道我能做些什么。

4

1 回答 1

0

将以下属性添加到 logback.xml 的配置中

<property resource="application.properties" />

或者

<springProperty name="mode" source="mode"/>
于 2019-12-09T10:01:19.623 回答