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

Spring Boot 3 RSocket项目如何为Log4j2日志添加Trace ID

解决方案

1. 补充Log4j2集成依赖

当前依赖中缺少将链路追踪信息注入Log4j2 MDC上下文的组件,需添加brave-log4j2依赖:

<dependency>
    <groupId>io.zipkin.brave</groupId>
    <artifactId>brave-log4j2</artifactId>
</dependency>

该依赖会自动把Trace ID和Span ID注入Log4j2的MDC,让你的日志格式配置能读取到对应值。

2. 配置链路追踪MDC参数(可选)

如果要确保MDC键名和你现有Log4j2格式完全匹配,可在配置文件中显式指定:

application.properties

# 启用Brave的MDC日志支持
management.tracing.brave.log.mdc.enabled=true
# 指定Trace ID在MDC中的键名(匹配Log4j2里的%X{traceId})
management.tracing.brave.log.mdc.trace-id-key=traceId
# 指定Span ID在MDC中的键名(匹配Log4j2里的%X{spanId})
management.tracing.brave.log.mdc.span-id-key=spanId
# 可选:设置Trace ID为短格式输出
management.tracing.brave.trace-id-propagation-format=SHORT

application.yml

management:
  tracing:
    brave:
      log:
        mdc:
          enabled: true
          trace-id-key: traceId
          span-id-key: spanId
      trace-id-propagation-format: SHORT

若不配置,Brave默认的MDC键名也是traceId和spanId,你的现有Log4j2格式可直接兼容,显式配置仅为更稳妥。

3. 确认RSocket链路追踪支持

你已引入rsocket-micrometer,结合micrometer-tracing-bridge-brave,RSocket请求链路会自动被追踪,Trace ID会在整个通信上下文传递并注入MDC,确保日志能正确输出链路信息。

4. 验证现有Log4j2格式

你当前的Log4j2格式配置%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{traceId:-}][%X{spanId:-}][%p][%X{xmlName}][%t] - %msg%n完全正确,:-表示无值时显示空,符合需求。

内容的提问来源于stack exchange,提问作者J. Hu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:15:09