背景
项目: spring-boot+maven+logback
项目环境分开发、测试、压测、预发布、生产环境等不同环境,不同环境的配置文件是不一样,日志打印需要根据不同的环境使用不同的配置,例如开发环境的日志等级是DEBUG,其他环境的日志等级是INFO;开发环境日志输出到控制台,其他环境日志输出到文件(不输出到控制台),还有生产环境需要配置elk。那么问题来了:
不同环境设置不同的日志打印级别
不同环境设置不同的日志输出设备(控制台、文件、db等)
不同环境是否配置elk
方案:
1.在此之前的方案是通过maven打包读取application.yml中的配置后来不同环境标签也有所不同的需求,具体配置可以看我之前写的logback读取application.yml中的值实现多环境配置这篇文章。
2.新的方案为通过maven打包插件maven-compiler-plugin
实现在打包时替换xml文件,本文介绍的是第二种方案
<!-- 不同环境的配置文件选择 -->
<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>
<!-- 也可以用下面这样的方式(指定相对url的方式指定outputDirectory) <outputDirectory>target/classes</outputDirectory> -->
<!-- 待处理的资源定义 -->
<resources>
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/resources/filters/${package.env}</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
项目目录如图所示:
image.png
网友评论