【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?

文章目录

      • **1. 确认依赖版本**
        • 示例依赖配置(Maven):
      • **2. 处理 `StaticLoggerBinder` 的移除**
        • 解决方案:
      • **3. 修改日志配置文件**
        • 示例 `logback.xml` 配置:
      • **4. 检查兼容性问题**
        • Spring Boot 2.x 的兼容性解决方案:
      • **5. 测试日志功能**
      • **6. 注意事项**

logback 1.2.x 升级到 1.3.x 需要做出以下改动和注意点,具体取决于你的项目环境(例如是否使用了 Spring Boot)。以下是详细的步骤和注意事项:

1. 确认依赖版本

  • SLF4J 版本:Logback 1.3.x 需要 SLF4J 2.x 的支持。因此需要升级 slf4j-api 到 2.x 版本。
  • 其他日志桥接器:如果项目中使用了其他日志桥接器(如 log4j-over-slf4jjul-to-slf4j),也需要同步升级到与 SLF4J 2.x 兼容的版本。
示例依赖配置(Maven):
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.7</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.3.0</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.3.0</version>
</dependency>

2. 处理 StaticLoggerBinder 的移除

  • 在 Logback 1.3.x 中,org.slf4j.impl.StaticLoggerBinder 类已被移除,取而代之的是基于 Java ServiceLoader 的机制。
  • 如果项目直接依赖该类(或通过某些框架间接依赖),需要调整代码以适配新的加载机制。
解决方案:
  • 禁用框架的日志初始化:例如在 Spring Boot 中,可以通过设置系统属性禁用默认的日志系统:
    System.setProperty("org.springframework.boot.logging.LoggingSystem", "none");
    
  • 确保正确加载 Logback:通过 ServiceLoader 加载 Logback 的实现。

3. 修改日志配置文件

  • Logback 1.3.x 引入了一些新特性,同时也对旧版配置进行了调整。需要检查并更新 logback.xml 文件。
  • 常见改动包括:
    • 使用新的标签或属性。
    • 移除已废弃的功能或参数。
示例 logback.xml 配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!-- 定义编码器 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder><!-- 控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 文件输出 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 日志级别 --><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="FILE" /></root>
</configuration>

4. 检查兼容性问题

  • Spring Boot 项目:Spring Boot 默认支持 Logback 1.2.x,但对 Logback 1.3.x 的支持需要从 Spring Boot 3.x 开始。如果你使用的是 Spring Boot 2.x,则需要手动禁用默认的日志系统并引入 Logback 1.3.x。
  • 其他框架:检查项目中使用的其他框架是否兼容 Logback 1.3.x。如果不兼容,可能需要升级相关框架或寻找替代方案。
Spring Boot 2.x 的兼容性解决方案:
  1. 禁用 Spring Boot 的默认日志系统(如上文提到的 System.setProperty)。
  2. 手动配置 Logback。

5. 测试日志功能

  • 升级完成后,务必全面测试日志功能,确保以下内容正常工作:
    • 日志输出到控制台和文件。
    • 日志滚动策略(如按时间或大小分割日志文件)。
    • 自定义日志配置生效。

6. 注意事项

  • CVE 漏洞修复:Logback 1.3.x 修复了许多安全漏洞(如 CVE-2021-42550、CVE-2021-44294 等),建议尽快升级以提高安全性。
  • 向后兼容性:部分旧版功能可能被移除或修改,需仔细阅读 Logback 官方文档 和 迁移指南。
  • 性能优化:Logback 1.3.x 对性能进行了改进,但在某些场景下可能会出现行为差异,需注意观察。

通过以上步骤,你可以顺利将 Logback 从 1.2.x 升级到 1.3.x,同时确保项目的稳定性和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24814.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…

DeepSeek行业应用实践报告-智灵动力【112页PPT全】

DeepSeek&#xff08;深度搜索&#xff09;近期引发广泛关注并成为众多企业/开发者争相接入的现象&#xff0c;主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析&#xff1a; 一、技术核心优势 开源与低成本 DeepSeek基于开源架构&#xf…

探索AI新前沿,CoT推理赋能文生图!港中文首次提出文生图的o1推理和inference scaling新范式

OpenAI的o1模型凭借思维链&#xff08;Chain-of-Thought, CoT&#xff09;技术&#xff0c;在推理能力上实现了质的飞跃&#xff0c;引领了大模型理解领域的新风尚。然而&#xff0c;这一创新的火花能否照亮图像生成领域&#xff1f;近日&#xff0c;来自香港中文大学、北京大学…

C# | GDI+图像测距辅助线的实现思路

C# | GDI图像测距辅助线的实现思路 文章目录 C# | GDI图像测距辅助线的实现思路一、辅助线需求概述二、坐标系与角度计算2.1 笛卡尔坐标系2.2 线长和角度计算方法2.3 文本角度矫正计算方法2.4 坐标变换实现步骤 三、与if判断方式对比四、总结 一、辅助线需求概述 在图像测量工…

SQL Server2019下载及安装教程

一、软件下载 SQLServer2019及SSMS管理工具下载链接&#xff1a; 百度网盘 请输入提取码 二、SQLServer2019安装 选中要安装的iso映像文件&#xff0c;右键点击装载&#xff08;有些系统可以直接双击打开&#xff0c;有些需要安装Daemon Tools软件去打开&#xff09; 找到s…

嵌入式开发--STM32的USB不识别和需要重新拔插的解决

STM32在通过USB口设备连接电脑时&#xff0c;一般是将其模拟为虚拟串口&#xff08;VCP&#xff09;。如果在调试中按了复位键&#xff0c;就不能连接电脑了。此时一般需要拔插一下USB口&#xff0c;但这样会给用户带来许多麻烦。 USB接口电路 电路接口中&#xff0c;USB-P线会…

深度剖析数据中台架构图,铸造数字文明的基石

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨奥零数据科技官网:http://www.aolingdata.com ✨AllData开源项目:https://github.com/alldatacenter/a…

MySQL练习

将安装包下载并上传 方法一 步骤 创建组与用户 [rootlocalhost ~]# groupadd mysql [rootlocalhost ~]# useradd -r -g mysql -s /bin/false mysql 解压安装包 [rootlocalhost ~]# tar xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz -C /usr/local/软连接 [rootlocalh…

jdk21下载、安装(Windows、Linux、macOS)

Windows 系统 1. 下载安装 访问 Oracle 官方 JDK 下载页面 或 OpenJDK 下载页面&#xff0c;根据自己的系统选择合适的 Windows 版本进行下载&#xff08;通常选择 .msi 安装包&#xff09;。 2. 配置环境变量 右键点击 “此电脑”&#xff0c;选择 “属性”。 在左侧导航栏…

docker的下载与使用(一)

本文默认使用linux系统以及会linux的基本指令&#xff0c;windows下安装docker较为繁琐 docker是什么 Docker 是一个开源的应用容器引擎&#xff0c;基于go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&…

WIn32 笔记:本专栏课件

专栏导航 上一篇&#xff1a;在VS2019里面&#xff0c;调整代码字体大小 回到目录 下一篇&#xff1a;计算机基础&#xff1a;二进制基础01&#xff0c;比特与字节 本节前言 在之前的讲解里面&#xff0c;我讲解了 Visual Studio 软件的一些个基础操作步骤。从本节开始&am…

【NLP 27、文本分类任务 —— 传统机器学习算法】

不要抓着枯叶哭泣&#xff0c;你要等待初春的新芽 —— 25.1.23 一、文本分类任务 定义&#xff1a;预先设定好一个文本类别集合&#xff0c;对于一篇文本&#xff0c;预测其所属的类别 例如&#xff1a; 情感分析&#xff1a; 这家饭店太难吃了 —> 正类 …

基于YOLO11深度学习的医学X光骨折检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

FastAPI系列:Ubuntu部署FastAPI项目实战

这篇文章提供了在Ubuntu上部署FastAPI应用程序的详细指南。首先&#xff0c;读者将学习如何创建项目目录并设置Python虚拟环境&#xff0c;接着安装FastAPI、Uvicorn和Gunicorn等必要依赖。随后&#xff0c;文章指导用户编写基本的FastAPI应用程序代码&#xff0c;并使用Gunico…

Redis缓存淘汰算法——LRU

文章目录 一、LRU 算法概述1.1 LRU 算法的工作原理1.2 手写LRU 二、Redis 中的 LRU 算法2.1 近似 LRU 算法2.2 如何判断“最近最少使用”的键&#xff1f;2.3 Redis 中的 LRU 配置 在 Redis 中&#xff0c; LRU&#xff08;Latest Recently Used&#xff0c;最近最少使用&…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴&#xff1a;可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题&#xff0c;并非是软件内自主实现的PDF合并&#xff0c;而是调用的pdftk这一工具&#xff0c;但楼主并没有提供pdftk&#xff0c;而…

C# Combox 绑定数据

1.在界面中添加一个combox 2.将数据绑定到combox List<GrindingType> type new List<GrindingType>();type.Add(new GrindingType { Id 1, Name "Product A", Type new List<string> { "1", "2" } });type.Add(new Grin…

怎样能写出完美的Prompt

怎样能写出完美的Prompt 大模型发展Prompt 实测最后感受 大模型发展 随着语言大模型的智能化演进&#xff0c;其作为内容生产引擎的核心竞争力日益凸显。如何通过Prompt工程深度释放其潜能&#xff0c;实现工作效率的指数级提升与文本质量的突破性飞跃&#xff0c;本质上是对&…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的农村合作社招聘系统

开题报告 本文以服务新农村建设为背景&#xff0c;针对农村劳动力就业信息获取不充分、求职效率低下的问题&#xff0c;设计并实现了农村合作社招聘系统。该平台具备注册登录、个人信息管理、就业资讯发布与互动、岗位搜索、详细信息查看、岗位申请以及申请状态跟踪等功能。系…

数据结构与算法-图论-最短路-拓展运用

选择最佳路线 分析&#xff1a; 这是一道图论中的最短路径问题&#xff0c;目标是在给定的公交网络中&#xff0c;找到从琪琪家附近的车站出发&#xff0c;到她朋友家附近车站&#xff08;编号为 s &#xff09;的最短时间。以下是对该问题的详细分析&#xff1a; 问题关键信息…