鸿蒙开发系统基础能力:【@ohos.hiTraceChain (分布式跟踪)】

分布式跟踪

本模块提供了端侧业务流程调用链跟踪的打点能力,包括业务流程跟踪的启动、结束、信息埋点等能力。

icon-note.gif 说明:  本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import hiTraceChain from '@ohos.hiTraceChain';

HiTraceFlag

跟踪标志组合类型枚举。

系统能力:  以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

名称默认值说明
DEFAULT0缺省标志。
INCLUDE_ASYNC1异步调用标志。启动跟踪时,缺省只跟踪同步调用。设置该标志,同时跟踪同步、异步调用。
DONOT_CREATE_SPAN1 << 1无分支标志。启动跟踪时,在同步、异步调用时缺省自动创建分支信息。设置该标志,指示不创建分支。
TP_INFO1 << 2埋点标志。启动跟踪式时,缺省不进行埋点。调试场景下设置该标志,在同步、异步调用的收发侧自动埋点,输出埋点信息和时间戳。收发埋点按照client、server分为[client send(CS)、server receive(SR)、server send(SS)、client receive(CR)]四类信息。一次同步调用输出CS/SR/SS/CR,一次异步调用输出CS/SR/SS三个埋点信息。
NO_BE_INFO1 << 3无起始结束标志。启动跟踪时,缺省打印启动及结束跟踪信息。设置该标志,指示不打印启动及结束跟踪信息。
DISABLE_LOG1 << 4日志关联标志。设置该标志,指示隐藏日志中的跟踪信息。
FAILURE_TRIGGER1 << 5故障触发标志。预置标志,暂时没有作用。
D2D_TP_INFO1 << 6设备间埋点标志。TP_INFO的一个子集,设置该标志,只进行设备间的调用埋点。

HiTraceTracepointType

跟踪埋点类型枚举。

系统能力:  以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

名称默认值说明
CS0客户端发送类型,标识client侧的发送埋点。
CR1客户端接收类型,标识client侧的接收埋点。
SS2服务端发送类型,标识server侧的发送埋点。
SR3服务端接收类型,标识server侧的接收埋点。
GENERAL4一般类型,标识CS、CR、SS、SR四种场景之外的埋点。

HiTraceCommunicationMode

跟踪通信类型枚举。

系统能力:  以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

名称默认值说明
DEFAULT0缺省通信类型
THREAD1线程间通信类型
PROCESS2进程间通信类型
DEVICE3设备间通信类型

HiTraceId

此接口为HiTraceId对象接口。

系统能力:  以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

参数名类型必填说明
chainIdbigint跟踪链标识。
spanIdnumber分支标识。
parentSpanIdnumber父分支标识。
flagsnumber跟踪标志组合。

hiTraceChain.begin

begin(name: string, flags: number = HiTraceFlag.DEFAULT): HiTraceId

开始跟踪,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
namestring跟踪业务名。
flagsnumber跟踪标志组合,具体可参考[HiTraceFlag]

返回值:

类型说明
[HiTraceId]HiTraceId实例。

示例:

let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);

hiTraceChain.end

end(id: HiTraceId): void

结束跟踪,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
id[HiTraceId]HiTraceId实例。

示例:

let asyncTraceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,结束跟踪。
hiTraceChain.end(asyncTraceId);

hiTraceChain.getId

getId(): HiTraceId

获取跟踪标识,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

返回值:

类型说明
[HiTraceId]HiTraceId实例。

示例:

let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,获取当前HiTraceId。
let curTraceId = hiTraceChain.getId();

hiTraceChain.setId

setId(id: HiTraceId): void

设置跟踪标识,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
id[HiTraceId]HiTraceId实例。

示例:

let asyncTraceId;
let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,设置当前HiTraceId。
hiTraceChain.setId(asyncTraceId);

hiTraceChain.clearId

clearId(): void

清除跟踪标识,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

示例:

let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,清除当前HiTraceId。
hiTraceChain.clearId();

hiTraceChain.createSpan

createSpan(): HiTraceId

创建跟踪分支,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

返回值:

类型说明
[HiTraceId]HiTraceId实例。

示例:

let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,创建跟踪分支。
let spanTraceId = hiTraceChain.createSpan();

hiTraceChain.tracepoint

tracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string): void

信息埋点,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
mode[HiTraceCommunicationMode]信息埋点需要指定的跟踪通信模式。
type[HiTraceTracepointType]信息埋点需要指定的跟踪埋点类型。
id[HiTraceId]实施信息埋点操作的HiTraceId实例。
msgstring信息埋点操作传入的trace说明信息。

示例:

let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
// 若干业务逻辑完成后,触发信息埋点操作。
hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, asyncTraceId, "Just a example");

hiTraceChain.isValid

isValid(id: HiTraceId): boolean

判断HiTraceId对象是否有效,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
id[HiTraceId]需要判断是否有效的HiTraceId实例。

返回值:

类型说明
boolean返回true表示HiTraceId有效,否则无效。

示例:

let traceId = hiTraceChain.begin("business");
let traceIdIsvalid = hiTraceChain.isValid(traceId);

hiTraceChain.isFlagEnabled

isFlagEnabled(id: HiTraceId, flag: HiTraceFlag): boolean

判断HiTraceId对象中指定的跟踪标志是否已置位,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
id[HiTraceId]需要判断指定跟踪标志是否置位的HiTraceId实例。
flag[HiTraceFlag]指定的跟踪标志。

返回值:

类型说明
boolean返回true标识HiTraceId已置位指定的flag,否则没有置位。

示例:

let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
// enabledDoNotCreateSpanFlag为true
let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);

hiTraceChain.enableFlag

enableFlag(id: HiTraceId, flag: HiTraceFlag): void

置位HiTraceId对象中指定的跟踪标志,同步接口。

系统能力:  SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
id[HiTraceId](需要置位指定跟踪标志的HiTraceId实例。
flag[HiTraceFlag]指定的跟踪标志。

示例:

let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
hiTraceChain.enableFlag(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
// enabledDoNotCreateSpanFlag为true
let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/859905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小鹏MONA M03实车曝光

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 小鹏汽车 MONA 系列首款车型已经官宣命名为“M03”&#xff0c;预计将于今年第三季度上市。 现在&#xff0c;这款新车的实车照片已经在网上流传开来。 此次曝光的是一款米色车漆版本&#xff0c;与当…

Twinkle Tray:屏幕亮度控制更智能

名人说&#xff1a;一点浩然气&#xff0c;千里快哉风。 ——苏轼 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍1、Twinkle Tray2、核心特点 二、下载安装1、下载2、安装 三、使用方法 很高兴你打开…

cookie和seesion的区别

cookie cookie介绍 Cookie是一种在Web浏览器和Web服务器之间传递的小文件&#xff0c;用于存储用户的一些状态信息&#xff0c;如登录信息、用户偏好等。当用户访问一个网站时&#xff0c;网站会将一个包含Cookie信息的HTTP响应头发送给浏览器&#xff0c;浏览器将这些Cookie…

【linux kernel】一文总结linux输入子系统

文章目录 一、导读二、重要数据数据结构&#xff08;2-1&#xff09;struct input_dev&#xff08;2-2&#xff09;input_dev_list和input_handler_list&#xff08;2-3&#xff09;struct input_handler 三、input核心的初始化四、常用API五、输入设备驱动开发总结(1)查看输入…

【面试题】面试官:判断图是否有环?_数据结构复试问题 有向图是否有环

type: NODE;name: string;[x: string]: any; }; [x: string]: any;}; export type Data Node | Edge; 复制代码 * 测试数据如下const data: Data[] [ { id: ‘1’, data: { type: ‘NODE’, name: ‘节点1’ } }, { id: ‘2’, data: { type: ‘NODE’, name: ‘节点2’ } },…

指针的相关知识

1.行指针 行指针 是一个指针&#xff0c; 指向的元素是一维数组。 存储行地址的指针变量&#xff0c;叫做行指针变量。形式如下&#xff1a; 存储类型 数据类型 (*指针变量名)[表达式&#xff1a;列数] ; 例如&#xff0c;int a[2][4]…

【linux kernel】一文总结linux的uevent机制

文章目录 一、kobject_uevent简介二、重要数据结构1、struct kobj_uevent_env2、struct kset_uevent_ops 三、kobject_uevent_env()详细剖析1、add_uevent_var()2、kobject_uevent_net_broadcast()3、call_usermodehelper_setup()4、call_usermodehelper_exec() 四、uevent_hel…

猫头虎 AI 前沿科技探索之路(持续更新):ChatGPT/GPT-4 科研应用、论文写作、数据分析与 AI 绘图及文生视频实战全攻略

猫头虎 AI 前沿科技探索之路(持续更新)&#xff1a;ChatGPT/GPT-4 科研应用、论文写作、数据分析与 AI 绘图及文生视频实战全攻略 背景介绍 随着人工智能技术的飞速发展&#xff0c;AI 的应用已经渗透到各个领域&#xff0c;从商业决策到医疗健康&#xff0c;再到日常生活中的…

猫头虎 分享已解决Error || Vanishing/Exploding Gradients: NaN values in gradients

猫头虎 分享已解决Error || Vanishing/Exploding Gradients: NaN values in gradients &#x1f42f; 摘要 &#x1f4c4; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于人工智能领域的博主。在AI开发中&#xff0c;我们经常会遇到各种各样的错误&#xff0c;其中Vani…

心理学|社会心理学——社会心理学单科作业(中科院)

一、单选题(第1-80小题,每题0.25分,共计40分。) 1、根据霍兰德的观点,社会心理学的形成期是在( )。 分值0.5分 A、社会哲学阶段 B、哲学思辨阶段 C、经验描述阶段 D、实证分析阶段 正确答案: C、经验描述阶段 2、社会行为公式B=f(P,E)中,B指( )。 分…

React+TS 从零开始教程(3):useState

源码链接&#xff1a;下载 在开始今天的内容之前呢&#xff0c;我们需要先看一个上一节遗留的问题&#xff0c;就是给属性设置默认值。 我们不难发现&#xff0c;这个defaultProps已经被废弃了&#xff0c;说明官方并不推荐这样做。其实&#xff0c;这个写法是之前类组件的时候…

国产编程—— 仓颉

应用 仓颉编程语言是一款由华为主导设计和实现的面向全场景智能的编程语言&#xff0c;主要应用于以下领域&#xff1a; 中文字符编码和文本数据处理&#xff1a;仓颉编程语言充分利用汉字的结构特点来设计编码&#xff0c;为开发者提供了一种高效的方式来编码、存储和处理中…

Kafka基础教程

Kafka基础教程 资料来源&#xff1a;Apache Kafka - Introduction (tutorialspoint.com) Apache Kafka起源于LinkedIn&#xff0c;后来在2011年成为一个开源Apache项目&#xff0c;然后在2012年成为一流的Apache项目。Kafka是用Scala和Java编写的。Apache Kafka是基于发布-订…

【Python/Pytorch 】-- K-means聚类算法

文章目录 文章目录 00 写在前面01 基于Python版本的K-means代码02 X-means方法03 最小二乘法简单理解04 贝叶斯信息准则 00 写在前面 时间演变聚类算法&#xff1a;将时间演变聚类算法用在去噪上&#xff0c;基本思想是&#xff0c;具有相似信号演化的体素具有相似的模型参数…

推荐一款AI修图工具,支持AI去水印,AI重绘,AI抠图...

不知道大家有没有这样的一个痛点&#xff0c;发现了一张不错的“素材”&#xff0c; 但是有水印&#xff0c;因此不能采用&#xff0c;但找来找去&#xff0c;还是觉得初见的那个素材不错&#xff0c;怎么办&#xff1f; 自己先办法呗。 二师兄发现了一款功能强大的AI修图工具…

使用Jetpack Compose为Android App创建自定义页面指示器

使用Jetpack Compose为Android App创建自定义页面指示器 在现代移动应用中&#xff0c;页面指示器在提供视觉导航提示方面发挥着重要作用&#xff0c;帮助用户理解其在应用内容中的当前位置。页面指示器特别适用于顺序展示内容的场景&#xff0c;如图片轮播、图像库、幻灯片放…

【Linux】Socket阻塞和非阻塞、同步与异步

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

java项目生成的api文档

生成Java项目API文档的方法 在进行Java项目开发时&#xff0c;编写良好的API文档对于团队合作和后续维护非常重要。生成API文档不仅可以提高团队协作效率&#xff0c;还可以方便其他开发人员了解项目结构和接口调用方式。在本文中&#xff0c;我们将介绍如何通过Java工具生成A…

WPF与Winform,你的选择是?

概述 在桌面应用的发展历程中&#xff0c;Winform和WPF作为微软推出的两大框架&#xff0c;各自承载着不同的设计理念和技术特色。Winform以其稳定、成熟的技术基础&#xff0c;长期占据着企业级应用开发的重要地位。而WPF&#xff0c;作为后来者&#xff0c;以其现代化的UI设计…

【ajax核心02】底层原理-Promise对象

目录 一&#xff1a;promise对象是什么 二&#xff1a;语法&#xff08;Promise使用步骤&#xff09; 三&#xff1a;Promise-三种状态 一&#xff1a;promise对象是什么 Promise 对象代表异步操作最终的完成&#xff08;或失败&#xff09;以及其结果值。 即Promise对象是…