当前位置: 首页 > news >正文

在jdk8的spring-boot-2.7.x项目中集成logback-1.3.x

1、当前软件选型框架

  1. 项目使用JDK为1.8
  2. spring-boot版本为2.7.x
  3. spring framework版本为5.3.x
  4. 日志门面slf4j-1.7.x
  5. 日志实现logback-1.2.x

2、需要使用高版本的logback-1.3.x的原因

  1. 想要使用高版本的特性
  2. 漏洞修复

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加载日志框架就对了

解决方案:

  1. 日志框架搭配:slf4j-2.0.x + logback-1.3.x
  2. 在整个系统的启动入口显示声明
	// 先去除spring加载日志系统System.setProperty("org.springframework.boot.logging.LoggingSystem", "none") // 再启动spring框架SpringApplication app = new SpringApplication(Application.class);
  1. 将logback-spring.xml更名为logback.xml
  2. 将logback.xml中与spring相关的配置去掉,使用logback的原生能力,比如springProperty,springProfile等功能不能再使用
  3. 可以去除在依赖引用中去除spring-boot-starter-logging
  4. 可以将在spring配置文件中与日志有关的配置去掉

3.3 如何查看版本依赖关系

  1. spring项目
    1). 进入spring官网 -> Projects -> sub projects(如spring boot) -> LEARN -> 选择对应的版本-> Reference Doc. -> System Requirements
    2). 根据文章内容查看对应版本的依赖关系
    3). 常用的几个项目的首页,可在首页上直接点击System Requirements 查看,也可点击左上角的切换其它版本或者切换其它项目
    spring-boot项目
    spring framework项目
    spring ai 项目

  2. logback项目
    logback-news 查看版本对应关系
    logback-download 有简单的版本关系说明
    logback-config 查看xml的配置规则 文章入口: logback-documentation 点击: The logback manual -> Ch3: Configuration

  3. slf4j项目
    slf4j-news 版本关系说明
    slf4j-manual 使用手册

4、其它文章参考

spring-boot的github社区关于升级的讨论
SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴
logback1.3.x配置详解与实践
SLF4J2.0.x与Logback1.3.x的绑定变动还是很大的,不要乱点鸳鸯谱

http://www.dtcms.com/a/355773.html

相关文章:

  • 【涂鸦T5】3. 录音
  • 实验项目:Kubernetes Ingress 实战演练
  • Cesium入门教程(三)环境搭建(Vue版)
  • 蓝凌研究院《2025上市公司AI数智化转型白皮书》发布
  • 【力扣】2725. 间隔取消
  • linux 环境 批量发送get请求
  • 大模型常用术语
  • 机器视觉学习-day10-图像添加水印
  • 帕萨特盘式制动器cad+设计说明书
  • TensorFlow 面试题及详细答案 120道(41-50)-- 数据输入与管道
  • workflow/http_parser源码解密:HTTP解析器的双倍扩容与零拷贝策略
  • 【C#】征服 .NET Framework 4.8 中的“古董”日期格式:/Date(1754548600000)/ 和 ISO 8601
  • 【Nacos】优雅规范的使用和管理yml配置文件
  • 苍穹外卖项目笔记day01
  • 工业级TF卡NAND + 北京君正 + Rk瑞芯微的应用
  • 本地大模型部署(下载) vs. 从头训练大模型
  • APP手游使用游戏盾SDK为何能有效抵御各类攻击?
  • ApiFox高并发测试用例
  • hintcon2025 IMGC0NV
  • 2024中山大学研保研上机真题
  • 多模态融合新纪元:Ovis2.5 本地部署教程,实现文本、图像与代码的深度协同推理
  • 力扣hot100:滑动窗口最大值优化策略及思路讲解(239)
  • MySQL 索引失效全解析与优化指南
  • 【软考】中级网络工程师历年真题合集下载(2015-2024)
  • Java多线程超详学习内容
  • Python 中的反射机制与动态灵活性
  • Spring学习笔记:Spring JDBC(jdbc Template)的深入学习和使用
  • 行业前瞻:在线教育系统源码与网校APP开发的技术进化方向
  • C++学习笔记之异常处理
  • Pruning-Guided Curriculum Learning