【SpringCloud】Spring Cloud Sleuth 日志跟踪(二十六)

  本章使用上一章的实例【SpringCloud】Spring Cloud Sleuth + Zipkin 服务调用链路追踪(二十五)

查看Spring Cloud Sleuth请求链路中请求头

  1、修改项目中(springcloud-provider-sleuth-payment8010)作为Sleuth服务提供者的Controller,内容如下:

 1 @RestController
 2 @Slf4j
 3 public class PaymentController {
 4 
 5     @GetMapping("/payment/zipkin")
 6     public String paymentZipkin(HttpServletRequest request){
 7         System.out.println(getHeadersInfo(request));
 8         System.out.println("traceid ====== " +  tracer.currentSpan().context().traceIdString());
 9         return "Hi, this is payment zipkin server";
10     }
11 
12     // 获取Header头中的信息
13     private Map<String, String> getHeadersInfo(HttpServletRequest request) {
14         Map<String, String> map = new HashMap<String, String>();
15         Enumeration headerNames = request.getHeaderNames();
16         while (headerNames.hasMoreElements()) {
17             String key = (String) headerNames.nextElement();
18             String value = request.getHeader(key);
19             System.out.println(key + "	======>	" + value);
20             map.put(key, value);
21         }
22         return map;
23     }
24 }

  2、测试

    1)重新启动项目

    2)访问地址:http://127.0.0.1:7995/consumer/payment/zipkin,正常获取内容

    

    可以从请求头中获取信息,其中常用的请求头代表的信息如下

    * X-B3-TraceId:一条请求链路(Trace)的唯一标识,必须值

    * X-B3-SpanId:一个工作单元(Span)的唯一标识,必须值

    * X-B3-ParentSpanId::标识当前工作单元所属的上一个工作单元

    * X-B3-Sampled::是否采样,1表示需要被输出,0表示不需要被输出

应用中获取TraceId

  1、在Controller中自动注入Tracer

 1 import brave.Tracer;
 2 ....
 3 
 4 @RestController
 5 @Slf4j
 6 public class PaymentController {
 7 
 8     @Autowired
 9     private Tracer tracer;
10 
11     @GetMapping("/payment/zipkin")
12     public String paymentZipkin(HttpServletRequest request){
13 
14         
15         System.out.println("traceid ====== " +  tracer.currentSpan().context().traceIdString());
16         ....
17 
18         return "Hi, this is payment zipkin server";
19     }
20 
21 }

  2、测试

    1)重新启动项目

    2)查看控制台输出

    

应用日志

  1、修改项目中(springcloud-provider-sleuth-payment8010)作为Sleuth服务提供者的Controller,内容如下:

1 log.info("Hi, this is payment zipkin server");

  2、测试

    1)重新启动项目

    2)访问地址:http://127.0.0.1:7995/consumer/payment/zipkin,正常获取内容

    3)查看控制台输出

    

    其中第一个代表应用名,

    第二个代表Trace ID,标识一条请求链路,

    第三个代表基本工作单元

    第三个代表是否将日志输出到Zipkin等服务中来收集和展示,注意采用使用1才为true,默认为0.1,则为false

原文地址:https://www.cnblogs.com/h--d/p/12865903.html