1、当前软件选型框架
- 项目使用JDK为1.8
- spring-boot版本为2.7.x
- spring framework版本为5.3.x
- 日志门面slf4j-1.7.x
- 日志实现logback-1.2.x
2、需要使用高版本的logback-1.3.x的原因
- 想要使用高版本的特性
- 漏洞修复
3、直接将logback升级1.3.x存在问题
原因:这里面存在严重的版本依赖关系
3.1 版本依赖关系
在 jdk-1.8的环境下,logback最高可以使用1.3.x,但要求slf4j的版本为 2.0.x
而支持slf4j-2.0.x的spring-boot版本为3.5.x
但在jdk-1.8的环境下,spring-boot版本最高只能使用2.7.x,spring-boot-3.5.x需要jdk17
综上:
各软件在JDK1.8的环境下配套关系为:
spring-boot-2.7.x + spring-framework-5.3.x + slf4j-1.7.x + logback-1.2.x
3.2 那jdk-1.8的spring-boot项目怎么才能使用logback-1.3.x
整体思路就是使用logback的原生能力,让logback框架自己来加载日志配置,不要让spring来加载
因为问题出在spring-2.7.x未适配slf4j-2.0.x,故不让spring加载日志框架就对了
解决方案:
- 日志框架搭配:slf4j-2.0.x + logback-1.3.x
- 在整个系统的启动入口显示声明
// 先去除spring加载日志系统
System.setProperty("org.springframework.boot.logging.LoggingSystem", "none")
// 再启动spring框架
SpringApplication app = new SpringApplication(Application.class);
- 将logback-spring.xml更名为logback.xml
- 将logback.xml中与spring相关的配置去掉,使用logback的原生能力,比如springProperty,springProfile等功能不能再使用
- 可以去除在依赖引用中去除spring-boot-starter-logging
- 可以将在spring配置文件中与日志有关的配置去掉
3.3 如何查看版本依赖关系
spring项目
1). 进入spring官网 -> Projects -> sub projects(如spring boot) -> LEARN -> 选择对应的版本-> Reference Doc. -> System Requirements
2). 根据文章内容查看对应版本的依赖关系
3). 常用的几个项目的首页,可在首页上直接点击System Requirements 查看,也可点击左上角的…切换其它版本或者切换其它项目
spring-boot项目
spring framework项目
spring ai 项目logback项目
logback-news 查看版本对应关系
logback-download 有简单的版本关系说明
logback-config 查看xml的配置规则 文章入口: logback-documentation 点击: The logback manual -> Ch3: Configurationslf4j项目
slf4j-news 版本关系说明
slf4j-manual 使用手册
4、其它文章参考
spring-boot的github社区关于升级的讨论
SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴
logback1.3.x配置详解与实践
SLF4J2.0.x与Logback1.3.x的绑定变动还是很大的,不要乱点鸳鸯谱