Spring boot使用logback实现多环境配置

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.18</version>



如果使用spring-boot,兼容logback,默认已经集成了这些文件,所以就不需要自己依赖注入了,直接在项目中使用就行了。



配置项值方案

======



利用Spring boot中application.yml的spring.profiles.active



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2IwMjFkZDM3NmMzZjQzNGU5MGJkNTZiYTE1Zjc1MGQ5?x-oss-process=image/format,png)



环境配置,dev开发环境和部署环境连接的数据库地址、debug模式等等都是不同的,为了区分dev开发环境配置和生产环境配置,可以创建两个yml文件,什么环境使用相应的配置文件:



*   **application.yml:公共配置文件**,里面可以通过spring.profiles.active=dev来指定使用哪个配置文件

*   **application-dev.yml:开发环境配置文件**

*   **application-prod.yml:生产环境配置文件**



**注意:**



> 1、当**公共配置文件application.yml和dev.yml(或prod.yml)**同时存在同一个配置的时候,**以dev.yml(prod.yml)配置文件为主**,



> 2、当配置项只在公共application.yml文件中有的时候,以公共配置为主



> 3、可以**把公共配置项放到application.yml中**



我们在看dev.xml和prod.xml配置文件



**dev.xml配置**



#dev.xml中的配置,用户开发环境

log:

path: /Users/gujiachun/Downloads

level: debug




**prod.xml配置**



#prod.xml中的配置,用户生产环境

log:

path: /Users/gujiachun/Downloads

level: info




此方案的设计原理就是,不同环境不同的配置值;然后在logback-spring.xml中使用此配置值。



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzQyZTJlNWUyMTU4YzQwNTY4NTdkYWFlOWJiMzFhMmQ2?x-oss-process=image/format,png)



上图就是logback-spring.xml配置,**里面有个重要的就是springProperty标签**,可以利用这个标签引用到application.yml中的值(包含dev.xml、prod.xml);log.level和log.path的值就可以在logback-spring.xml中使用,**使用方式${logPath}、${logLevel}**。



**测试代码**



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2NiOGU5YzcwN2MwYjQwYWQ4NTRjNWVlMGYzNDdiMWI2?x-oss-process=image/format,png)



启动测试,指定spring.profiles.active=dev或prod;我们发现在logPath目录出现对应的日志文件



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzI4NmM4NTFmNzNkNjQxNzA4NjkyNDkzZTE5M2MzYWZk?x-oss-process=image/format,png)



因为不同的环境,我们配置成日志级别不一样,dev对应debug,prod对应info;日志文件内容不同环境对应不同内容



**dev环境输出**



2020-01-04 10:01:50,298 – debug…

2020-01-04 10:01:50,298 – info…

2020-01-04 10:01:50,298 – error…




**prod环境输出**



2020-01-04 10:03:55,198 – info…

2020-01-04 10:03:55,198 – error…




外部配置文件方案

========



另一种更简单的方式,可以利用logging.config指定配置文件,而且有一个好处可以不一定要取名logback-spring.xml;我们来看一下



**application-dev.xml环境**



#日志相关配置

logging:

config: classpath:conf/logback-dev.xml




**application-prod环境**



#日志相关配置

logging:

config: classpath:conf/logback-prd.xml




**logback-dev.xml配置**



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzA0MTg4OWYwZjk3MzQ5ZWZiMDVhNTYzZTcxNGM1NTQx?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2VhNDQ1M2YyZWUwNDQ4MDdiZTAxNDZhNDMxZDgxNWNk?x-oss-process=image/format,png)



**logback-prod.xml配置**



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzAzMTFiMDk0NjA1YjQzNmNiYWE4ZGUzMzhlOGI5MWQ0?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzAxNTk3OWQ1NmZkOTRkZGRiZDU5ZDhmYzgyMDVmNTk3?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzRmY2UzOGFlZjI3MjQ4ZmU4ZWEzMmE2NTIyNDQxNjdh?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzlmMzY5ZTM0YzFlYjRjYjhhZGY4MmRiN2M4M2E0ZDNm?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzYwOGIxMDdjYjkwZTQ3MzdiZTc2Mzk2MjcwNmJlNGQ4?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2E5NzkwM2Y0MDFlZjQ5MjdhMWJhYmI3MjQ4MzhhOGVl?x-oss-process=image/format,png)



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzhhODliOTQ4Yzg1ODRhNGM5OWVlNTI3ZGFlODgwMTU3?x-oss-process=image/format,png)



**启动指定spring.profiles.active=dev**



在控制台输出了



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzIwMjlhMGMxMzEyNzRlZjZhZTc2NTRlYzUzMjRhZjQ4?x-oss-process=image/format,png)



而在日志文件



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2E3ZDhmNjZlYWY3ZDRmMWRhYWQ5ZjU1MTVkNjg3MjQ0?x-oss-process=image/format,png)



日志内容



2020-01-04 11:56:10 [39mDEBUG[0;39m 7454 — [main] [36mc.r.g.t.LoggerTest[0;39m : debug:…




为什么只有debug日志,没有info、error;这个是因为日志文件中加了个过滤器



<level>${logLevel}</level>

<onMatch>ACCEPT</onMatch>

<onMismatch>DENY</onMismatch>



> 此过滤器中的属性onMatch和onMismatch,匹配日志级别就接受,不匹配就不接受。所以只接受debug级别。



**启动指定spring.profiles.active=prod**



控制台输出



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2QzZDViYTM2NTU4ZTQ1YWZiZjllOTUxYzIxYzJiMDc2?x-oss-process=image/format,png)



日志文件



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AzLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlL2NiMGY3Y2E4MGUyNDQ1ZGFiOTljMjNmNGIwMDJmNDdj?x-oss-process=image/format,png)



> 生成了4个文件,也是因为过滤器,生产环境的日志级别为info,所以debug日志文件里面为空。



springProfile方案

===============



springProfile标签在logback.xml中可以起到区分不同环境分支;如果我们需要配置不同环境,不同的输出方式,如:dev环境输出到控制台以及文件,prod环境只要输出到文件。



**logback-spring.xml配置**



![Spring boot使用logback实现多环境配置](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWdlLzVhYTZhYzNhNjg4YTQ4ODliZTcxZTg4Mzk5Njc4Zjdl?x-oss-process=image/format,png)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值