ToB企服应用市场:ToB评测及商务社交产业平台

标题: SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴 [打印本页]

作者: 我可以不吃啊    时间: 2024-7-30 08:06
标题: SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴
开心一刻

一大早,她就发消息诘责我
她:你给我老实交代,昨晚去哪鬼混了?
我:没有,就哥几个喝了点酒
她:那我给你打了那么多视频,为什么不接?
我:不太方便呀
她:我不信,和你哥们儿喝酒有啥不方便接视频的?
她:你肯定有别的女人了!
我:你老公就坐在我旁边,我敢接?
前情回顾

SpringBoot2.7照旧任性的,就是不支持Logback1.3,你能奈他何 讲了许多,总结下来就两点
换个角度想想,我们应该是能理解 Spring Boot 官方的
所以求稳,Spring Boot 2.x.x 不打算集成 Logback 1.3.x
但是,如果我们也任性一回,非要强扭这个瓜,Spring Boot 是不是也不能奈我们何?
霸王硬上弓

参考这个,我们来配置下
启动确实正常了,我们加点简朴的业务日志,发现日志也输出正常
  1. 2024-07-26 16:46:48.609|INFO|http-nio-8080-exec-1|525|o.s.web.servlet.DispatcherServlet       :Initializing Servlet 'dispatcherServlet'
  2. 2024-07-26 16:46:48.610|INFO|http-nio-8080-exec-1|547|o.s.web.servlet.DispatcherServlet       :Completed initialization in 0 ms
  3. 2024-07-26 16:46:48.632|INFO|http-nio-8080-exec-1|23|com.qsl.web.TestWeb                     :hello接口入参:青石路
  4. 2024-07-26 16:46:50.033|INFO|http-nio-8080-exec-3|23|com.qsl.web.TestWeb                     :hello接口入参:青石路
  5. 2024-07-26 16:46:50.612|INFO|http-nio-8080-exec-4|23|com.qsl.web.TestWeb                     :hello接口入参:青石路
  6. 2024-07-26 16:46:51.150|INFO|http-nio-8080-exec-5|23|com.qsl.web.TestWeb                     :hello接口入参:青石路
  7. 2024-07-26 16:46:51.698|INFO|http-nio-8080-exec-6|23|com.qsl.web.TestWeb                     :hello接口入参:青石路
  8. 2024-07-26 16:46:52.203|INFO|http-nio-8080-exec-7|23|com.qsl.web.TestWeb                     :hello接口入参:青石路
复制代码
日志文件写入也正常
这不仅解渴,还很甜呀
但不要甜的太早,这仅仅只是一个 demo:spring-boot-2_7_18,没有业务代码,简朴的不能再简朴了,你们要是以此来判断甜与不甜,那就大错特错了;应用到项目中,不但要包管可以或许正常启动,还要包管已有的所有业务可以或许正常运行,至于筹划中的业务,那就将来再说,谁知道明天和意外哪个先来,认真过好当下!
初步实验,是可行的,所以你们大胆的去试吧,但要做好全方位的业务测试
wilkinsona 提到了,关闭 Spring Boot 的 LoggingSystem 后,用的是 Logback 的默认配置,配置文件必须是 logback.xml 而不能是 logback-spring.xml;固然榜一大哥的话很权威,但我们主打一个任性,就想来试试 logback-spring.xml,会有什么样的结果,直接将 logback.xml 改名成 logback-spring.xml,能启动起来,但有一堆 debug 日志,重点是
日志没有写入文件
wilkinsona 诚不欺我!
原理分析

关闭了 Spring Boot 的 LoggingSystem 后,日志相关的全权交给 Logback,而关于 Logback 的配置文件加载,我是写过一篇详解的:从源码来理解slf4j的绑定,以及logback对配置文件的加载,直接跳到总结部分,有这么一段
编译期间,完成slf4j的绑定以及logback配置文件的加载。slf4j会在classpath中寻找org/slf4j/impl/StaticLoggerBinder.class(会在具体的日志框架如log4j、logback等中存在),找到并完成绑定;同时,logback也会在classpath中寻找配置文件,先找logback.configurationFile、没有则找logback.groovy,若logback.groovy也没有,则找logback-test.xml,若logback-test.xml照旧没有,则找logback.xml,若连logback.xml也没有,那么说明没有配置logback的配置文件,那么logback则会启用默认的配置(日志信息只会打印在控制台)
虽说 Logback 是 1.1.17,而不是 1.3.14,但对配置文件的加载应该是没变的
大家注意看我的措辞:应该,这样纵然变了,你们也不能说我,因为我说的是应该
保险起见,你们应该去看下 1.3.14 的源码!
这也是为什么配置文件是 logback.xml 的时间,日志能正常写入文件,而是 logback-spring.xml 时间,日志不能写入日志文件的原因,因为 Logback 不认 logback-spring.xml,Spring Boot 才认!
至于 Spring Boot LoggingSystem 嘛,等我掌握了再来和你们聊,一定要等我哟
总结

Spring Boot 2.x.x 默认依靠 Logback 1.2.x,不支持 Logback 1.3.x,但是通过设置
System.setProperty("org.springframework.boot.logging.LoggingSystem", "none");
启动时不报错的,再结合 logback.xml,日志是可以或许正常写入日志文件的;但是保险起见,照旧不保举升级到 Logback 1.3.x
能不动就不要动,改好没绩效,改出问题要背锅,吃力不讨好,又不是不能跑
如果一定要升级,那就做好全量测试,把所有业务场景都覆盖到

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4