Spring 启动 + Logback 弹簧属性。 Spring属性 日志级别更改后未定义

Spring Boot + Logback springProperty. SpringProperty undefined after logging level changing

我有 Spring 引导应用程序并在 application.properties 下一个变量中设置:

logging.config=file:./xxx_logback.xml
appName=myapp
appVersion=1.0

应用程序在启动后正确创建日志文件。但是当我更改日志记录级别时,logback 会创建名称为“appName_IS_UNDEFINED-appVersion_IS_UNDEFINED”的新日志文件。我使用下一个 logback 配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>
    <!-- To enable JMX Management -->
    <jmxConfigurator/>
    
    <springProperty scope="context" name="appName" source="appName"/>
    <springProperty scope="context" name="appVersion" source="appVersion"/>

    <appender name="FILE-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/${appName}-${appVersion}.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>logs/${appName}-${appVersion}-%d{yyyy-MM-dd}-%i.log.zip</fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="warn">
   
        <appender-ref ref="FILE-APPENDER"/>
    </root>

    <logger name="xxx.xxx" level="warn"/>

</configuration>

无法理解如何修复它。

最有可能的原因是:

https://docs.spring.io/spring-boot/docs/2.5.2/reference/htmlsingle/#features.logging.logback-extensions

这些扩展不能与 Logback 的配置扫描一起使用。如果您尝试这样做,更改配置文件会导致错误。