Spring Boot 3.1.0中Kafka消费日志缺失Request ID问题求助
解决方案
1. 开启Kafka消息的追踪上下文传递
在现有Spring Kafka配置中,为生产者和消费者添加追踪传递开关,无需修改业务代码:
spring: kafka: producer: properties: # 保留原有生产者配置,新增以下属性 micrometer.tracing.propagation.enabled: true consumer: properties: # 保留原有消费者配置,新增以下属性 micrometer.tracing.propagation.enabled: true
2. 对齐日志格式与TraceId
确保你的日志配置(如Logback的logback-spring.xml)中,RequestID对应的是MDC中的traceId(micrometer tracing默认的链路追踪ID键)。示例日志pattern片段:
<!-- 替换原有RequestID相关的占位符 --> [%d{yyyy-MM-dd HH:mm:ss.SSS}] [RequestID:[%X{traceId}]] [%thread] %-5level %logger{36} - %msg%n
如果当前日志配置中已经使用%X{RequestID},可以通过自定义ObservationFilter将traceId复制到MDC的RequestID键,但推荐直接使用traceId键以减少额外代码。
3. 验证效果
重启服务后,生产端发送消息时,micrometer会自动将traceId写入Kafka消息的headers中;消费端接收到消息时,会自动从headers提取traceId并放入MDC,此时消费端日志就能显示对应的Request ID了。
内容的提问来源于stack exchange,提问作者Anurator
相关产品推荐
相关产品推荐

