通过Maven运行时,Spring Profile在Logback中不可用

我已经设置了logback.xml来根据活动的
Spring配置文件选择要使用的appender.当我使用app运行应用程序时,该技术非常有效

java -jar -Dspring.profiles.active =本地路径/到/ target / application.war

但是当我使用Spring Boot Maven Plugin运行时,例如,

mvn spring-boot:运行-Drun.profiles = local

这是logback.xml的相关部分

<root level="INFO">
    <if condition='"${spring.profiles.active}".contains("local")'>
        <then>
            <appender-ref ref="CONSOLE"/>
        </then>
        <else>
            <appender-ref ref="FILE"/>
        </else>
    </if>
</root>

我会注意到配置文件确实在应用程序本身中正确显示,在处理logback.xml时不可用.

从IntelliJ IDE运行时也会出现此问题.

是否有另一种方法可以使用Maven Spring Boot插件使配置文件对logback.xml解析器可见,并且它是否也适用于IntelliJ?

最佳答案 您是否尝试通过logback-spring扩展来配置logback?

在你的情况下,logback-spring.xml可能如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<include resource="org/springframework/boot/logging/logback/base.xml"/><!-- include  this config if you want to use spring-boot's built-in appenders -->
<configuration>
    <root level="INFO">
        <springProfile name="local">
                <appender-ref ref="CONSOLE"/>
        </springProfile>
        <springProfile name="otherprofile">
                <appender-ref ref="FILE"/>
        </springProfile>
    </root>
</configuration>

有关logback-spring扩展中可用选项的更多信息:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logback-extensions

点赞