SkyWalking--用代码手动获取traceId的方法

news/2024/11/23 0:02:54/

原文网址:SkyWalking--用代码手动获取traceId的方法_IT利刃出鞘的博客-CSDN博客

简介

本文介绍Java项目如何用代码手动获取SkyWalking的traceId。

引入依赖

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><!-- 当前的最新版本,请与安装的服务器版本对应 --><version>8.7.0</version>
</dependency>

代码获取traceId

在想获取traceId的地方加@Trace注解,然后调用TraceContext.traceId。

例:

@PostMapping("create")
@Trace
public Result create(Order order) {orderService.create(order);String traceId = TraceContext.traceId();return new Result().message("创建订单成功");
}

Trace所在包:import org.apache.skywalking.apm.toolkit.trace.Trace;

TraceContext所在包:import org.apache.skywalking.apm.toolkit.trace.TraceContext; 

TraceContext可以获得spanId等其他信息:

项目应用

        实际上,项目中不需要每个方法都加@Trace这个注解来获得traceId,只需要在全局响应的地方来获取即可。

        下边展示项目中的实际用法(我是实测过的,可以获取到traceId)。

package com.example.common.advice;import com.example.common.entity.Result;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;@Slf4j
@ControllerAdvice
public class GlobalResponseBodyAdvice implements ResponseBodyAdvice<Object> {@Overridepublic boolean supports(MethodParameter returnType,Class<? extends HttpMessageConverter<?>> converterType) {// 若接口返回的类型本身就是ResultWrapper,则无需操作,返回false// return !returnType.getParameterType().equals(ResultWrapper.class);return true;}@Override@ResponseBody@Tracepublic Object beforeBodyWrite(Object body, MethodParameter returnType,MediaType selectedContentType,Class<? extends HttpMessageConverter<?>> selectedConverterType,ServerHttpRequest request, ServerHttpResponse response) {String traceId = TraceContext.traceId();if (body instanceof String) {// 若返回值为String类型,需要包装为String类型返回。否则会报错try {ObjectMapper objectMapper = new ObjectMapper();Result<Object> result = new Result<>().data(body).traceId(traceId);return objectMapper.writeValueAsString(result);} catch (JsonProcessingException e) {throw new RuntimeException("序列化String错误");}} else if (body instanceof Result) {return ((Result)body).traceId(traceId);}return new Result<>().traceId(traceId).data(body);}
}

其他网址

skywalking获取traceId(tid)的方式_lijunwyf的专栏-CSDN博客
skywalking04 - skywalking自定义链路追踪@Trace_过了这个村没这个老王的博客-CSDN博客


http://www.ppmy.cn/news/544874.html

相关文章

深度学习代码环境配置(编译器, git, anaconda)

内容 编译器 gcc&#xff1a;GNU编译器套装C builderMicrosoft Visual C&#xff08;MSVC&#xff09;&#xff1a;微软的VC编译器MinGW&#xff08;Minimalist GNU on Windows&#xff09;&#xff1a;可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合&…

C语言进阶教程(再论指针和数组(2))

文章目录 前言一、指针的加1减1运算二、指针的减法运算三、指针的关系运算四、指针比较运算总结 前言 本篇文章我们继续讲解指针和数组&#xff0c;因为指针和数组对于刚刚学习C语言或者是学习了不久C语言的同学都会造成一些困扰&#xff0c;所以这里多用几篇文章来帮助大家理…

ubuntu重装系统后电脑没声音怎么办[已解决]

ubuntu装完系统后耳机没声音 驱动没问题的话,就可能是”realtek音频管理器”的问题 1.右下角或控制面板中找到”realtek音频管理器” 发现目前只有设备 “Digital Output” 没有扬声器和麦克风 2.设置-选项 3.更改为AC97前面板 4.更改完后发现变成3个设备了,其中扬…

重装系统后电脑没有声音输出怎么办

** 重装系统后电脑没有声音输出怎么办&#xff1f; 经常遇到重装系统前&#xff0c;电脑声音正常&#xff0c;重装后没有声音&#xff0c;没拔过线&#xff0c;没动过硬件&#xff0c;所以这时就先排除硬件问题。 原因可能有下面3种情况&#xff1a; 1&#xff0c;设置问题。…

解决Win10重装系统后,蓝牙耳机可连接但无声音的问题

解决Win10重装系统后&#xff0c;蓝牙耳机可连接但无声音的问题 我是装完win10系统以后又重装了所有驱动&#xff0c;然后出现了这个问题。有连接成功和断开提示音&#xff0c;但是点击测试、调节音量或放音乐都没声音。 折腾了一下午&#xff0c;按照网上说的&#xff0c;还咨…

Surface Book重装系统步骤

Surface Book平板电脑是一款集黑科技于一身的气质神机&#xff0c;不管时尚简约的精心设计&#xff0c;还是酷炫个性的形态切换&#xff0c;低调奢华有内涵&#xff0c;轻松吸引潮男潮女的目光。那么&#xff0c;拥有逼格满满的Surface Book该如何重装win10系统呢?下面听快启动…

戴尔服务器重装系统优盘启动不了怎么办,戴尔电脑重装系统识别不了u盘怎么办...

1.你好 您好, 建议您一定要安装windows原版操作系统,不要使用Ghost版本的操作系统,因为这类操作系统多为精简系统,稳定性和兼容性非常差。并且注意不要使用驱动管理软件查找公版驱动,而是应该使用出厂自带的操作系统光盘或者到戴尔官网下载相应的各硬件驱动程序进行安装,…

关于电脑重装系统后,耳机插后面有声音,前面插口没声音

1、先检查驱动&#xff0c;驱动没问题&#xff0c;在进行第二步&#xff0c;检查驱动可以下载驱动精灵进行检查。 2、如果不是耳机或耳机插孔的故障或相应驱动没安装好&#xff0c;那么下面的设置应该可以恢复&#xff1a; 开始菜单→设置→控制面板→“声音、语音和音频设备”…