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

如何使用logbook-spring-boot-starter自定义日志输出格式

解决方案

你的问题出在Logback配置的两处错误,以及Logbook的级别设置上,以下是修正后的完整配置:

1. 修正logback.xml配置

你之前误用了Logbook的日志格式化器作为Logback的Appender类,这是无效的。应该使用Logback标准的ConsoleAppender,并调整日志匹配目标格式:

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 生成目标要求的时间格式、级别显示及日志内容结构 -->
            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'} - %level: %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 单独配置Logbook日志的输出级别与Appender,避免重复日志 -->
    <logger name="org.zalando.logbook" level="INFO" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

2. 调整application.yml配置

确保Logbook输出JSON格式,并将日志级别设为INFO(对应目标格式中的info:):

logging:
  level:
    org.zalando.logbook: INFO
logbook:
  format: json # 显式指定JSON格式,确保日志内容为JSON字符串

关键说明

  • Appender类修正:org.zalando.logbook.json.JsonHttpLogFormatter是Logbook内部的日志内容格式化组件,不是Logback的Appender实现,必须替换为Logback标准的ConsoleAppender才能让pattern配置生效。
  • 时间格式匹配:%d{yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'}生成带6位微秒的UTC时间字符串,和你期望的格式完全一致。
  • 级别控制:将org.zalando.logbook的日志级别设为INFO,确保输出的日志级别标识为info:,同时通过additivity=false避免日志被root logger重复输出。

内容的提问来源于stack exchange,提问作者Nishan B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:20:24