Skywalking 项目中获取 TraceID

发布于 2023-12-27 09:39:33 字数 2102 浏览 17 评论 0

一. 为什么要获取 TraceID

由于生产环境中用户访问非常频繁,如果遇到用户访问异常,能够快速的定位调用链将大大提高排错效率。

二. 项目中获取 TraceID

2.1 引入依赖

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>6.5.0</version>
</dependency>

2.2 方法调用

import org.apache.skywalking.apm.toolkit.trace.TraceContext;

String traceId = TraceContext.traceId();  

2.2.1 获取 TraceID

我们可以在 SpringMVC 中配置统一异常处理,然后返回 TraceId:

package cn.bigcoder.distributed.qa.admin.web.handle;

import cn.bigcoder.distributed.qa.dto.JsonReturn;
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class GlobalExceptionResolver {

    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionResolver.class);

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public JsonReturn handlerException(Exception exception) {
        log.error(exception.getMessage(), exception);
        String traceId = TraceContext.traceId();
        return JsonReturn.error("请求服务器异常,请联系管理员!traceId:" + traceId);
    }
}

2.2.2 其他 API

  • ActiveSpan.error() 将当前 Span 标记为出错状态
  • ActiveSpan.error(String errorMsg) 将当前 Span 标记为出错状态, 并带上错误信息
  • ActiveSpan.error(Throwable throwable) 将当前 Span 标记为出错状态, 并带上 Throwable
  • ActiveSpan.debug(String debugMsg) 在当前 Span 添加一个 debug 级别的日志信息
  • ActiveSpan.info(String infoMsg) 在当前 Span 添加一个 info 级别的日志信息

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

走走停停

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文