根据 logback-spring.xml 中的 springProfiles[dev, stg, prod] ,如何激活命令行中传递的相应 spring 配置文件
Posted
技术标签:
【中文标题】根据 logback-spring.xml 中的 springProfiles[dev, stg, prod] ,如何激活命令行中传递的相应 spring 配置文件【英文标题】:Depending on springProfiles[dev, stg, prod] in logback-spring.xml , how to activate corresponding spring profile passed in command line 【发布时间】:2019-04-10 03:00:26 【问题描述】:在我的应用程序属性中,我设置了 spring.profiles.active=dev,但是当我通过 gradle clean -Dspring.profiles.active=stg build 从命令行传递时,默认情况下它仅采用 dev 配置文件。如何覆盖 application.properteis 中设置的默认值。
【问题讨论】:
【参考方案1】:您可以使用配置文件使用以下配置。可以使用命令行参数 -Dspring.profiles.active="abc" 设置活动配置文件。对于多个配置文件,您可以使用逗号分隔的配置文件名称。
<?xml version="1.0" encoding="UTF-8"?>
<appender name="rootappender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<springProfile name="abc">
<file>$LOG_ROOT/abc.log</file>
</springProfile>
<springProfile name="xyz">
<file>$LOG_ROOT/xyz.log</file>
</springProfile>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover. Make sure the path matches the one in the file element
or else the rollover logs are placed in the working directory. -->
<fileNamePattern>$LOG_ROOT/system_%dyyyy-MM-dd.log</fileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger36 - %msg%n</pattern>
</encoder>
</appender>
【讨论】:
java 代码中是否需要任何更改,如果我使用 gradle -Dspring.profiles.active=abc 运行,它会拾起。我想使用 gradle 和 spring boot 来运行它。请澄清 请帮助我如何覆盖 application.properteis 文件中设置的值。在我的 application.propeties 文件中,我有 spring.profiles.active="dev",但是当我从命令行 gradle -Dspring.profiles.active="stg" build 传递时,它没有采用我正在传递的最新配置文件 [stg] .请指导我 1.使用 maven/graddle 构建一个 jar 2. 使用 Java 命令行实用程序 java -cp 运行它。 -jar --Dspring.profiles.active="abc"。如果不从 application.properties 中删除条目,它应该可以工作。 先生,我按照您所说的做了,但是当我运行 java -cp 时。 -jar ./build/libs/api-0.0.1.jar -Dspring.profiles.active="dev",spring 横幅即将出现并返回终端。但实际上我想在 gradle buildTask 之后运行 docker-compose up。所以请多指导一下。 下面的链接可能对你有帮助 callicoder.com/spring-boot-docker-example baeldung.com/dockerizing-spring-boot-application 在docker命令中你可以指定jar启动命令,你应该把参数放在那里。以上是关于根据 logback-spring.xml 中的 springProfiles[dev, stg, prod] ,如何激活命令行中传递的相应 spring 配置文件的主要内容,如果未能解决你的问题,请参考以下文章
logback.xml和logback-spring.xml的区别
springboot配置每天一个日志文件logback-spring.xml