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

微服务日志未包含Trace ID:基于Micrometer Tracing的解决求助

解决微服务日志Trace ID不显示问题

1. 补充缺失的日志依赖

你使用Log4j2作为日志框架,但缺少Brave对Log4j2的埋点依赖,导致Trace ID无法注入到MDC(映射诊断上下文)中。在pom.xml中添加以下依赖:

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

同时明确指定兼容版本(与Spring Cloud 2022.0.0匹配),在properties节点补充:

<properties>
    <!-- 原有属性保留 -->
    <micrometer-tracing.version>1.0.1</micrometer-tracing.version>
    <brave.version>5.14.1</brave.version>
</properties>

2. 修正日志格式配置

当前logging.pattern.level配置适配Logback,针对Log4j2需调整为控制台日志格式:

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}] %c{1}:%L - %m%n"

如果使用自定义log4j2.xml文件,确保PatternLayout包含Trace ID和Span ID:

<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [${spring:spring.application.name},%X{traceId:-},%X{spanId:-}] %c{1}:%L - %m%n"/>

3. 修复Eureka配置缩进错误

application.yml中Eureka实例配置存在缩进问题,修正后:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
  instance:
    preferIpAddress: true

4. 验证Trace ID输出

在控制器中添加测试日志,确认请求触发Trace ID生成:

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class TestController {
    @GetMapping("/test")
    public String test() {
        log.info("处理测试请求");
        return "OK";
    }
}

启动服务后访问http://localhost:8082/test,查看控制台日志,即可看到包含Trace ID和Span ID的输出内容。

内容的提问来源于stack exchange,提问作者Summy Saurav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:20:41