大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡,你们的行动将是我无限的动力。
本篇主题是:logback日志不生效bug,怎么验证是否生效?
深刻体会到,bug都是很恶心的,需要大量时间去排除。但有时候一个bug会触发你的学习,然后不仅解决了还能学到更多东西,这就是bug另外的一面。
话不多说,下面进入本篇内容
一、必要知识点
logback在启动的时候,会按照下面的顺序加载配置文件
- 在classpath中查找 logback.groovy 文件
- 在classpath中查找 logback-test.xml 文件
- 在classpath中查找 logback.xml 文件
首先必须知道,logback在classpath目录下,它会自动加载(logback日志命名符合下面规则加载顺序即可),下面都是生效的
1、application和logback.xml都在classpath目录下
2、application在config下,logback.xml在classpath目录下
二、怎么验证logback是否生效
设置debug=“true”,这样控制台可以看到日志
<configuration debug="true" >
...
</configuration>
启动可以看到
三、失效情况1
因为启动application配置文件和logback文件不在同一目录,失效。
解决方案,将配置文件移进config目录下,和logback在同一目录下并配置logging: config: classpath:config/logback.xml即可
四、失效情况2
不符合默认加载的命名(不符合logback.groovy、logback.xml、logback-test.xml)
比如logback-dev.xml失效
如果确实想按照自己的需求命名
比如每个环境下都不一样,dev/sit/prod等,那么可以通过logback.xml中配置logback-xx.xml去加载你需要的环境的logback-xx.xml,如下
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-${spring.profiles.active}.xml"/>
</configuration>
那么只要配置好环境启动即可
结果(最后还是加载了logback-dev.xml)
五、失效情况3
有其他的logback提前生效了,这个只能自己排除,可能你其他容器中已经自带了,可以去target/classes里面看是否
下面是logback-test.xml生效了,导致logback.xml失效,这个是加载顺序问题导致,上面已经说了加载顺序。
本文结束!