背景
項(xiàng)目: spring-boot+maven+logback
項(xiàng)目環(huán)境分開發(fā)吟税、測(cè)試、壓測(cè)嗦篱、預(yù)發(fā)布、生產(chǎn)環(huán)境等不同環(huán)境幌缝,不同環(huán)境的配置文件是不一樣灸促,日志打印需要根據(jù)不同的環(huán)境使用不同的配置,例如開發(fā)環(huán)境的日志等級(jí)是DEBUG涵卵,其他環(huán)境的日志等級(jí)是INFO浴栽;開發(fā)環(huán)境日志輸出到控制臺(tái),其他環(huán)境日志輸出到文件(不輸出到控制臺(tái))轿偎,還有生產(chǎn)環(huán)境需要配置elk典鸡。那么問(wèn)題來(lái)了:
不同環(huán)境設(shè)置不同的日志打印級(jí)別
不同環(huán)境設(shè)置不同的日志輸出設(shè)備(控制臺(tái)、文件坏晦、db等)
不同環(huán)境是否配置elk
方案:
1.在此之前的方案是通過(guò)maven打包讀取application.yml中的配置后來(lái)不同環(huán)境標(biāo)簽也有所不同的需求萝玷,具體配置可以看我之前寫的logback讀取application.yml中的值實(shí)現(xiàn)多環(huán)境配置這篇文章。
2.新的方案為通過(guò)maven打包插件maven-compiler-plugin
實(shí)現(xiàn)在打包時(shí)替換xml文件英遭,本文介紹的是第二種方案
<!-- 不同環(huán)境的配置文件選擇 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- 覆蓋原有文件 -->
<overwrite>true</overwrite>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<!-- 也可以用下面這樣的方式(指定相對(duì)url的方式指定outputDirectory) <outputDirectory>target/classes</outputDirectory> -->
<!-- 待處理的資源定義 -->
<resources>
<resource>
<!-- 指定resources插件處理哪個(gè)目錄下的資源文件 -->
<directory>src/main/resources/filters/${package.env}</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
項(xiàng)目目錄如圖所示:
image.png