開篇
??忽然想起好久不寫博客,今天就搞一個
背景
??現(xiàn)有項目集成的日志采集框架有點小問題,每次運行時,都會在日志加載這里卡頓半分鐘,非常影響工作效率.并且本地單測或者運行,也沒有日志采集的必要性,所以我們今天改造項目,實現(xiàn)不同環(huán)境下加載不同的日志配置,這樣在開發(fā)環(huán)境和測試環(huán)境下不再啟動日志采集的配置,加快項目啟動
Start
??項目 SpringBoot Version和Log Version
<properties>
<spring-boot.version>2.1.8.RELEASE</spring-boot.version>
<slf4j.version>1.7.14</slf4j.version>
<logback.version>1.2.3</logback.version>
</properties>
One
??首先 maven 構(gòu)建時要有一個profile(鑒于所有項目都有profile,我這里貼一個簡單版本)
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prev</id>
<properties>
<env>prev</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
Two
??添加 maven resource 插件 和 build resource過程 (這里必須要添加,保證maven 的 配置項 可以加載到 SpringBoot 中)
<build>
<finalName>trade-service-inquire</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.ziroom.trade.rent.inquire.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- resource插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Tree
??添加 SpringBoot 配置 (application.properties 文件中)
spring.profiles.active=@env@
Four
??改造原有的 logback-spring.xml 文件,使用 springProfile 包裹原有的日志配置,并通過 name 指定不同環(huán)境下的日志配置
<springProfile name="test">
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="allAppender"/>
</root>
</springProfile>
<springProfile name="prod">
<root level="DEBUG">
<appender-ref ref="allAppender"/>
<appender-ref ref="errorAppender"/>
</root>
</springProfile>
End
??整個改造的核心就是利用 maven 配置的profile 替換 springBoot 中的 profileActive,并利用 logback <springProfile>標(biāo)簽所提供能力(根據(jù)spring.profile.active 加載不同日志配置),實現(xiàn)不同環(huán)境下加載不同的日志配置