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

embedded/2025/3/3 18:46:08/

文章目录

      • **1. 确认依赖版本**
        • 示例依赖配置(Maven):
      • **2. 处理 `StaticLoggerBinder` 的移除**
        • 解决方案:
      • **3. 修改日志配置文件**
      • **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 文件。
  • 常见改动包括:
    • 使用新的标签或属性。
    • 移除已废弃的功能或参数。
logbackxml__44">示例 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.ppmy.cn/embedded/169690.html

相关文章

删除hive用户后该用户创建的表权限问题及修复

问题 当hive集群开启多用户的模式下&#xff0c;假设用户组A的用户hive_test创建了一个表&#xff0c; 此时另一个用户也是可以访问这个表的&#xff0c;但是因为一些原因&#xff0c;目前需要删除用户组A和用户hive_test, 在这个情况下&#xff0c;该用户创建的表&#xff0c…

【小羊肖恩】小羊杯 Round 2 C+K

题目链接&#xff1a;https://ac.nowcoder.com/acm/contest/100672#question C.是毛毛虫吗&#xff1f; 思路&#xff1a; 其实很简单&#xff0c;假设我们要满足题目所给条件&#xff0c;那么这个毛毛虫最坏情况下肯定是一条如下图所示的无向图 右端省略号为对称图形 &…

视频批量分段工具

参考原文&#xff1a;视频批量分段工具 选择视频文件 当您启动这款视频批量分段工具程序后&#xff0c;有两种便捷的方式来选择要处理的视频文件。其一&#xff0c;您可以点击程序界面中的 “文件” 菜单&#xff0c;在下拉选项里找到 “选择视频文件” 按钮并点击&#xff1b…

wordpress子分类调用父分类名称和链接的3种方法

专为导航而生&#xff0c;在wordpress模板制作过程中常常会在做breadcrumbs导航时会用到&#xff0c;子分类调用父分类的名称和链接&#xff0c;下面这段简洁的代码&#xff0c;可以完美解决这个问题。 <?php echo get_category_parents( $cat, true, &raquo; ); ?…

自然语言处理NLP深探

1. NLP 的定义、特点、具体工作、历史和流派 定义:自然语言处理(Natural Language Processing,NLP)是计算机科学与人工智能领域的一个重要分支,旨在让计算机理解、处理和生成人类自然语言,实现人与计算机之间用自然语言进行有效通信。特点 交叉性:涉及计算机科学、语言学…

AF3 pair_sequences函数解读

AlphaFold3 msa_pairing模块的pair_sequences函数的核心目标是基于 MSA(多序列比对)中的物种信息,在多条链之间建立 MSA 配对索引,从而帮助 AlphaFold3 捕捉共进化信息,提升蛋白复合物预测的准确性。函数pair_sequences 通过调用 _make_msa_df、 _create_species_dict 以…

ubuntu Linux 正确设置中文环境的方法

在安装ubuntu Linux中文环境时&#xff0c;有不少资料提到要修改一些配置文件&#xff0c;其实完全没必要&#xff0c;以下是正确安装中文环境的方法。 在新安装的ubuntu Linux的基础上&#xff0c;如下&#xff1a; 1. 安装中文语言包 # 更新软件源 sudo apt update# 安装中…

深入理解Reactor Flux的生成方法

在Reactor框架中&#xff0c;Flux 是一个非常重要的概念&#xff0c;它用于表示一个可以产生多个事件的响应式流。通过 Flux 提供的多种生成方法&#xff0c;我们可以灵活地创建各种类型的流。本文将详细介绍 Flux.generate 方法的使用&#xff0c;并通过实例帮助读者更好地理解…