使用SpringBoot开发过程中,我们可能会遇到这样的场景:在开发环境下希望打印的日志多一点便于观察调用过程,在测试、生产等环境下只打印必要的日志信息,即根据不同环境能设置不同的日志级别,SpringBoot中提供了<springProfile>标签的使用,来帮助我们实现针对不同环境的配置。下面给大家演示下具体使用方式~
- SpringBoot版本 2.4.5
参考官方文档说明:https://docs.spring.io/spring-boot/docs/2.4.5/reference/htmlsingle/#profile-specific-configuration
使用方式
1.修改SpringBoot工程中的application.yaml配置文件(application.properties配置同理),来加载logback xml配置文件
logging:
# 这里替换成你的logback配置文件名称
config: classpath:logback-sbd.xml
2.修改logback的xml配置文件,使用<springProfile>
标签来声明不同环境下的配置
示例配置:https://github.com/netbuffer/spring-boot-demo/blob/logback/src/main/resources/logback-sbd.xml
<!--针对dev环境下的日志配置-->
<springProfile name="dev">
<logger name="cn.netbuffer" level="DEBUG"/>
</springProfile>
<!--针对test环境下的日志配置-->
<springProfile name="test">
<logger name="cn.netbuffer" level="INFO"/>
</springProfile>
3.创建Controller层映射方法来观察日志输出情况
示例代码:https://github.com/netbuffer/spring-boot-demo/blob/logback/src/main/java/cn/netbuffer/springboot/demo/controller/ParamController.java
@GetMapping("log")
public void log() {
log.debug("debug level log");
log.info("info level log");
}
4.修改application.yaml配置文件来设置SpringBoot启动环境
spring:
profiles:
active: dev
运行效果
启动工程,通过Postman工具访问/param/log接口
观察后台日志输出,发现debug、info级别日志均输出出来了
再次修改启动环境参数,并重新启动工程
spring:
profiles:
active: test
访问/param/log接口,观察后台日志输出
可以看到日志中只输出了info级别的日志,证明我们的配置均已经生效了~
示例工程:https://github.com/netbuffer/spring-boot-demo/tree/logback