跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Spring Boot 2.7.x 升级 Logback 至 1.3.x 及以上版本的解决方案

Spring Boot 2.7.x 默认依赖 logback 1.2.x,直接升级至 1.3.x 会因 StaticLoggerBinder 类缺失报错。解决方法是将环境变量 org.springframework.boot.logging.LoggingSystem 设为 none,由应用自行初始化 logback,同时升级 slf4j 至 1.8.x 以上,并将配置文件路径配置改为 logback.configurationFile。此外需注意 Servlet 容器初始化顺序问题。

微码行者发布于 2026/3/29更新于 2026/5/3130 浏览

Spring Boot 2.7.x 默认使用 logback 1.2.x 及以下版本,若升级至 1.3.x 及以上版本启动会报错。主要原因是 Spring Boot 2.7.x 依赖 logback-classic 1.2.x 中的类 org.slf4j.impl.StaticLoggerBinder,而 logback-classic 1.3.x 已删除此类。

报错原因分析

通过源码分析查找报错原因,组件版本如下:

  • spring-boot: 2.7.18
  • logback-classic: 1.2.11

Spring Boot 启动时会调用方法 LoggingApplicationListener.onApplicationEnvironmentPreparedEvent,其中会获取到 LoggingSystem 的实例:

LoggingSystem Instance

生成 LoggingSystem 实例的方法是 LoggingSystem.get:

LoggingSystem Get

其中 SYSTEM_PROPERTY=org.springframework.boot.logging.LoggingSystem。

若 SYSTEM_PROPERTY 的值是 LoggingSystem 的实现类的类名(如 org.springframework.boot.logging.logback.LogbackLoggingSystem),则会创建这个类的实例;若值为 NONE,则生成 NoOpLoggingSystem;否则,Spring Boot 会在类路径中查找日志组件并实例化。

在 onApplicationEnvironmentPreparedEvent 中获取到 LoggingSystem 实例后,会调用 initialize 方法:

Initialize Method

在其中会调用 initializeSystem 方法:

Initialize System

其中 CONFIG_PROPERTY=logging.config,即从环境变量 logging.config 中获取 logback 的配置文件,然后使用 LogbackLoggingSystem.initialize 对 logback 进行初始化:

Config Property

查看 getLoggerContext() 的源代码:

Get Logger Context

可以看到 StaticLoggerBinder 是在这个地方被用到了。

解决方案

通过分析上面的源代码可知,如果想让 Spring Boot 2.7.x 使用 logback-classic 1.3.x 及以上版本,则需要先将环境变量 org.springframework.boot.logging.LoggingSystem 的值设置成 none,也就是不让 Spring Boot 帮忙初始化 logback,改由应用自己初始化 logback。

另外,logback-classic 升级至 1.3.x 以上版本,slf4j 也要升级至 1.8.x 及以上版本。

最后,如果 logback 配置文件的路径以前是通过环境变量 logging.config 配置的,则需要将 logback 配置文件的路径通过环境变量 logback.configurationFile 进行配置:

Logback Config File

其中 CONFIG_FILE_PROPERTY=logback.configurationFile。

上述源代码属于 logback-classic 组件,版本如下:

  • logback-classic: 1.3.15

该解决方案可在 logback 官方网站下载页面查阅:

https://logback.qos.ch/download.html

进一步说明

如果应用是在 servlet 3.0 以上容器部署时,logback 会由 ch.qos.logback.servlet.LogbackServletContainerInitializer 初始化,而 Spring Boot 由 org.springframework.web.SpringServletContainerInitializer 初始化,这 2 个类都实现了 javax.servlet.ServletContainerInitializer 接口。一般 servlet 容器会先执行 LogbackServletContainerInitializer,这样就会把 logback 初始化完成,所以 logback 一般不是在执行 SpringServletContainerInitializer 的过程中初始化的。

目录

  1. 报错原因分析
  2. 解决方案
  3. 进一步说明
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • FPGA 与 DSP 协同通信系统实战解析
  • 1. 两数之和 Java 解法
  • LangChain 进阶实战:利用 LLM 与 Agents 构建自主决策智能体
  • 开源大模型实战:GPT-OSS 本地部署与全面测评
  • ToDesk、顺网云与海马云部署 DeepSeek 模型对比评测
  • 基于 DeepFace 与 OpenCV 的实时情绪分析器实现
  • AI 开发核心概念解析:Vibe Coding、Agent、提示词、MCP 与 Skills
  • 豆包 Seedream 4.0 多图融合技术解析:田园犬与三花猫多场景生成
  • MiniOneRec 技术解读:基于 LLM 的生成式推荐框架
  • 大语言模型 (LLM) 高频面试题及答案汇总
  • GitHub 上最受欢迎的 7 大 Claude Skills 开源 AI 技能库
  • ibbot 智体机灵 V1.0:基于 dtns.os 的移动端 AI 智能体平台
  • Spring Boot 主程序入口与启动流程深度解析:从 @SpringBootApplication 到应用就绪
  • AgentScope Java:阿里开源的 LLM 智能体框架
  • AI 智能客服系统构建方案:选型指南与实战避坑
  • 基于 RAG、KG、VS 与 TF 融合的领域 LLM 增强框架 SMART-SLIC
  • 零公网 IP 安全访问本地 AI 服务的方法与原理
  • 基于遗传算法的 LQR 控制器最优设计算法
  • OpenClaw 安装与飞书机器人接入指南
  • Vibe Coding 模式:Claude Code 与 Ralph Wiggum 自动化开发解析

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online