You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.0.6中Logback PatternLayout %C{1.}格式报错问题

问题解决:Spring Boot 3.0.6中Logback %C{1.}格式报错的原因及修复

原因分析

Spring Boot 3.x系列默认依赖Logback 1.4.x版本,而Spring Boot 2.7.x依赖的是Logback 1.2.x版本。两者在%C(或等价的%logger)模式的参数语法上有重大变更:

  • 在Logback 1.2.x中,%C{1.}的语法表示保留最后1个包段 + 类名(例如com.example.demo.MyService会输出d.MyService)
  • 在Logback 1.4.x中,原有的{n.}语法被移除,解析器会严格将%C后的参数当作整数解析,同时新增{n.-}语法实现“保留最后n个包段+类名”的效果。因此%C{1.}中的1.会被当作无效整数,触发NumberFormatException。

修复方案

将%C{1.}替换为%C{1.-},即可实现和原来完全一致的日志格式效果。修改后的Appender配置如下:

<appender name="Console"
          class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.-}): %msg%n%throwable
        </Pattern>
    </layout>
</appender>

也可以使用等价的%logger{1.-}来替代%C{1.-},两者功能完全相同。

补充说明

如果需要保留前n个包段+类名,Logback 1.4.x直接使用%C{n}即可(例如%C{2}会将com.example.demo.MyService输出为c.e.MyService),这部分语法和旧版本保持一致。

内容的提问来源于stack exchange,提问作者Bernadett Kovács-Szenti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:05:14