1e41f4b71Sopenharmony_ci# @ohos.hiTraceChain (分布式跟踪)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci本模块提供了端侧业务流程调用链跟踪的打点能力,包括业务流程跟踪的启动、结束、信息埋点等能力。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明:**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## 导入模块
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```ts
12e41f4b71Sopenharmony_ciimport { hiTraceChain } from '@kit.PerformanceAnalysisKit';
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci## HiTraceFlag
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci跟踪标志组合类型枚举。
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 |
22e41f4b71Sopenharmony_ci| -------- | -------- | -------- |
23e41f4b71Sopenharmony_ci| DEFAULT           | 0      | 缺省标志。       |
24e41f4b71Sopenharmony_ci| INCLUDE_ASYNC     | 1      | 异步调用标志。启动跟踪时,缺省只跟踪同步调用。设置该标志,同时跟踪同步、异步调用。   |
25e41f4b71Sopenharmony_ci| DONOT_CREATE_SPAN | 1 << 1 | 无分支标志。启动跟踪时,在同步、异步调用时缺省自动创建分支信息。设置该标志,指示不创建分支。     |
26e41f4b71Sopenharmony_ci| TP_INFO           | 1 << 2 | 埋点标志。启动跟踪式时,缺省不进行埋点。调试场景下设置该标志,在同步、异步调用的收发侧自动埋点,输出埋点信息和时间戳。收发埋点按照client、server分为[client send(CS)、server receive(SR)、server send(SS)、client receive(CR)](#hitracetracepointtype)四类信息。一次同步调用输出CS/SR/SS/CR,一次异步调用输出CS/SR/SS三个埋点信息。       |
27e41f4b71Sopenharmony_ci| NO_BE_INFO        | 1 << 3 | 无起始结束标志。启动跟踪时,缺省打印启动及结束跟踪信息。设置该标志,指示不打印启动及结束跟踪信息。 |
28e41f4b71Sopenharmony_ci| DISABLE_LOG       | 1 << 4 | 日志关联标志。设置该标志,指示隐藏日志中的跟踪信息。  |
29e41f4b71Sopenharmony_ci| FAILURE_TRIGGER   | 1 << 5 | 故障触发标志。预置标志,暂时没有作用。  |
30e41f4b71Sopenharmony_ci| D2D_TP_INFO       | 1 << 6 | 设备间埋点标志。TP_INFO的一个子集,设置该标志,只进行设备间的调用埋点。 |
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci## HiTraceTracepointType
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci跟踪埋点类型枚举。
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 |
39e41f4b71Sopenharmony_ci| -------- | -------- | -------- |
40e41f4b71Sopenharmony_ci| CS       | 0 | 客户端发送类型,标识client侧的发送埋点。        |
41e41f4b71Sopenharmony_ci| CR       | 1 | 客户端接收类型,标识client侧的接收埋点。        |
42e41f4b71Sopenharmony_ci| SS       | 2 | 服务端发送类型,标识server侧的发送埋点。        |
43e41f4b71Sopenharmony_ci| SR       | 3 | 服务端接收类型,标识server侧的接收埋点。        |
44e41f4b71Sopenharmony_ci| GENERAL  | 4 | 一般类型,标识CS、CR、SS、SR四种场景之外的埋点。|
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci## HiTraceCommunicationMode
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci跟踪通信类型枚举。
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 |
53e41f4b71Sopenharmony_ci| -------- | -------- | -------- |
54e41f4b71Sopenharmony_ci| DEFAULT  | 0 | 缺省通信类型    |
55e41f4b71Sopenharmony_ci| THREAD   | 1 | 线程间通信类型  |
56e41f4b71Sopenharmony_ci| PROCESS  | 2 | 进程间通信类型  |
57e41f4b71Sopenharmony_ci| DEVICE   | 3 | 设备间通信类型  |
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci## HiTraceId
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci此接口为HiTraceId对象接口。
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
66e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
67e41f4b71Sopenharmony_ci| chainId      | bigint | 是 | 跟踪链标识。   |
68e41f4b71Sopenharmony_ci| spanId      | number | 否 | 分支标识。     |
69e41f4b71Sopenharmony_ci| parentSpanId | number | 否 | 父分支标识。   |
70e41f4b71Sopenharmony_ci| flags        | number | 否 | 跟踪标志组合。 |
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci## hiTraceChain.begin
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_cibegin(name: string, flags?: number): HiTraceId
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci开始跟踪,同步接口。
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci**参数:**
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
83e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
84e41f4b71Sopenharmony_ci| name  | string | 是 | 跟踪业务名。 |
85e41f4b71Sopenharmony_ci| flags | number | 否 | 跟踪标志组合,具体可参考[HiTraceFlag](#hitraceflag)。 |
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci**返回值:**
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci| 类型 | 说明 |
90e41f4b71Sopenharmony_ci| -------- | -------- |
91e41f4b71Sopenharmony_ci| [HiTraceId](#hitraceid) | HiTraceId实例。 |
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci**示例:**
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci```ts
96e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是INCLUDE_ASYNC与DONOT_CREATE_SPAN的并集。
97e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
98e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,结束跟踪。
99e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
100e41f4b71Sopenharmony_ci```
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci## hiTraceChain.end
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ciend(id: HiTraceId): void
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci结束跟踪,同步接口。
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci**参数:**
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
113e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
114e41f4b71Sopenharmony_ci| id | [HiTraceId](#hitraceid) | 是 | HiTraceId实例。 |
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci**示例:**
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci```ts
119e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是DEFAULT。
120e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
121e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,结束跟踪。
122e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
123e41f4b71Sopenharmony_ci```
124e41f4b71Sopenharmony_ci
125e41f4b71Sopenharmony_ci## hiTraceChain.getId
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_cigetId(): HiTraceId
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci获取跟踪标识,同步接口。
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci**返回值:**
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci| 类型 | 说明 |
136e41f4b71Sopenharmony_ci| -------- | -------- |
137e41f4b71Sopenharmony_ci| [HiTraceId](#hitraceid) | HiTraceId实例。 |
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci**示例:**
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci```ts
142e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是DEFAULT。
143e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
144e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,获取当前跟踪标识。
145e41f4b71Sopenharmony_cilet curTraceId = hiTraceChain.getId();
146e41f4b71Sopenharmony_ci// 同一跟踪链获取的跟踪标识的chainId一定相同。
147e41f4b71Sopenharmony_ciif (curTraceId.chainId != traceId.chainId) {
148e41f4b71Sopenharmony_ci// 基于异常场景的处理逻辑。
149e41f4b71Sopenharmony_ci}
150e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,结束跟踪。
151e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
152e41f4b71Sopenharmony_ci```
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci## hiTraceChain.setId
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_cisetId(id: HiTraceId): void
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci设置跟踪标识,同步接口。
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci**参数:**
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
165e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
166e41f4b71Sopenharmony_ci| id | [HiTraceId](#hitraceid) | 是 | HiTraceId实例。 |
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ci**示例:**
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci```ts
171e41f4b71Sopenharmony_ci// 获取当前跟踪链中的跟踪标识。
172e41f4b71Sopenharmony_cilet traceId = hiTraceChain.getId();
173e41f4b71Sopenharmony_ci// 将获取的跟踪标识设置为当前traceId。
174e41f4b71Sopenharmony_cihiTraceChain.setId(traceId);
175e41f4b71Sopenharmony_ci```
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci## hiTraceChain.clearId
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ciclearId(): void
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci清除跟踪标识,同步接口。
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
184e41f4b71Sopenharmony_ci
185e41f4b71Sopenharmony_ci**示例:**
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ci```ts
188e41f4b71Sopenharmony_ci// 业务开始前,尝试清除跟踪标识。
189e41f4b71Sopenharmony_cihiTraceChain.clearId();
190e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是DEFAULT。
191e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
192e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,结束跟踪。
193e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
194e41f4b71Sopenharmony_ci```
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci## hiTraceChain.createSpan
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_cicreateSpan(): HiTraceId
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci创建跟踪分支,同步接口。
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci**返回值:**
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci| 类型 | 说明 |
207e41f4b71Sopenharmony_ci| -------- | -------- |
208e41f4b71Sopenharmony_ci| [HiTraceId](#hitraceid) | HiTraceId实例。 |
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**示例:**
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci```ts
213e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是DEFAULT。
214e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
215e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,创建跟踪分支。
216e41f4b71Sopenharmony_cilet spanTraceId = hiTraceChain.createSpan();
217e41f4b71Sopenharmony_ci// 同一跟踪链的跟踪标识的chainId一定相同。
218e41f4b71Sopenharmony_ciif (spanTraceId.chainId != traceId.chainId) {
219e41f4b71Sopenharmony_ci// 基于异常场景的处理逻辑。
220e41f4b71Sopenharmony_ci}
221e41f4b71Sopenharmony_ci//业务结束,关闭跟踪。
222e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
223e41f4b71Sopenharmony_ci```
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci## hiTraceChain.tracepoint
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_citracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string): void
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci信息埋点,同步接口。
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
232e41f4b71Sopenharmony_ci
233e41f4b71Sopenharmony_ci**参数:**
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
236e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
237e41f4b71Sopenharmony_ci| mode | [HiTraceCommunicationMode](#hitracecommunicationmode) | 是 | 信息埋点需要指定的跟踪通信模式。 |
238e41f4b71Sopenharmony_ci| type | [HiTraceTracepointType](#hitracetracepointtype)| 是 | 信息埋点需要指定的跟踪埋点类型。 |
239e41f4b71Sopenharmony_ci| id   | [HiTraceId](#hitraceid) | 是 | 实施信息埋点操作的HiTraceId实例。 |
240e41f4b71Sopenharmony_ci| msg  | string | 否 | 信息埋点操作传入的trace说明信息。 |
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci**示例:**
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci```ts
245e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是INCLUDE_ASYNC与DONOT_CREATE_SPAN的并集。
246e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
247e41f4b71Sopenharmony_ci// 若干业务逻辑完成后,触发信息埋点操作。
248e41f4b71Sopenharmony_cihiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, traceId, "Just a example");
249e41f4b71Sopenharmony_ci//业务结束,关闭跟踪。
250e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
251e41f4b71Sopenharmony_ci```
252e41f4b71Sopenharmony_ci
253e41f4b71Sopenharmony_ci## hiTraceChain.isValid
254e41f4b71Sopenharmony_ci
255e41f4b71Sopenharmony_ciisValid(id: HiTraceId): boolean
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci判断HiTraceId对象是否有效,同步接口。
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ci**参数:**
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
264e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
265e41f4b71Sopenharmony_ci| id  | [HiTraceId](#hitraceid) | 是 | 需要判断是否有效的HiTraceId实例。 |
266e41f4b71Sopenharmony_ci
267e41f4b71Sopenharmony_ci**返回值:**
268e41f4b71Sopenharmony_ci
269e41f4b71Sopenharmony_ci| 类型 | 说明 |
270e41f4b71Sopenharmony_ci| -------- | -------- |
271e41f4b71Sopenharmony_ci| boolean | 返回true表示HiTraceId有效,否则无效。 |
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci**示例:**
274e41f4b71Sopenharmony_ci
275e41f4b71Sopenharmony_ci```ts
276e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是DEFAULT。
277e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
278e41f4b71Sopenharmony_ci// traceIdIsvalid为true
279e41f4b71Sopenharmony_cilet traceIdIsvalid = hiTraceChain.isValid(traceId);
280e41f4b71Sopenharmony_ciif (traceIdIsvalid) {
281e41f4b71Sopenharmony_ci// 基于跟踪标识合法性校验成功的场景的处理逻辑。
282e41f4b71Sopenharmony_ci}
283e41f4b71Sopenharmony_ci//业务结束,关闭跟踪。
284e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
285e41f4b71Sopenharmony_ci```
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci## hiTraceChain.isFlagEnabled
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ciisFlagEnabled(id: HiTraceId, flag: HiTraceFlag): boolean
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci判断HiTraceId对象中指定的跟踪标志是否已置位,同步接口。
292e41f4b71Sopenharmony_ci
293e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci**参数:**
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
298e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
299e41f4b71Sopenharmony_ci| id  | [HiTraceId](#hitraceid) | 是 | 需要判断指定跟踪标志是否置位的HiTraceId实例。 |
300e41f4b71Sopenharmony_ci| flag | [HiTraceFlag](#hitraceflag) | 是 | 指定的跟踪标志。 |
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci**返回值:**
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci| 类型 | 说明 |
305e41f4b71Sopenharmony_ci| -------- | -------- |
306e41f4b71Sopenharmony_ci| boolean | 返回true标识HiTraceId已置位指定的flag,否则没有置位。 |
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci**示例:**
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci```ts
311e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是INCLUDE_ASYNC。
312e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
313e41f4b71Sopenharmony_ci// enabledIncludeAsyncFlag为true。
314e41f4b71Sopenharmony_cilet enabledIncludeAsyncFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
315e41f4b71Sopenharmony_ciif (enabledIncludeAsyncFlag) {
316e41f4b71Sopenharmony_ci// 基于INCLUDE_ASYNC跟踪标志已设置场景的处理逻辑。
317e41f4b71Sopenharmony_ci}
318e41f4b71Sopenharmony_ci//业务结束,关闭跟踪。
319e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
320e41f4b71Sopenharmony_ci```
321e41f4b71Sopenharmony_ci
322e41f4b71Sopenharmony_ci## hiTraceChain.enableFlag
323e41f4b71Sopenharmony_ci
324e41f4b71Sopenharmony_cienableFlag(id: HiTraceId, flag: HiTraceFlag): void
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_ci置位HiTraceId对象中指定的跟踪标志,同步接口。
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiTrace
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**参数:**
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
333e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
334e41f4b71Sopenharmony_ci| id  | [HiTraceId](#hitraceid) | 是 | 需要置位指定跟踪标志的HiTraceId实例。 |
335e41f4b71Sopenharmony_ci| flag | [HiTraceFlag](#hitraceflag) | 是 | 指定的跟踪标志。 |
336e41f4b71Sopenharmony_ci
337e41f4b71Sopenharmony_ci**示例:**
338e41f4b71Sopenharmony_ci
339e41f4b71Sopenharmony_ci```ts
340e41f4b71Sopenharmony_ci// 开启跟踪,跟踪标志是INCLUDE_ASYNC。
341e41f4b71Sopenharmony_cilet traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
342e41f4b71Sopenharmony_ci// enabledDoNotCreateSpanFlag为false。
343e41f4b71Sopenharmony_cilet enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
344e41f4b71Sopenharmony_ci// 设置DONOT_CREATE_SPAN跟踪标志。
345e41f4b71Sopenharmony_cihiTraceChain.enableFlag(traceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
346e41f4b71Sopenharmony_ci// enabledDoNotCreateSpanFlag为true。
347e41f4b71Sopenharmony_cienabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
348e41f4b71Sopenharmony_ciif (enabledDoNotCreateSpanFlag) {
349e41f4b71Sopenharmony_ci// 基于DONOT_CREATE_SPAN跟踪标志已设置场景的处理逻辑。
350e41f4b71Sopenharmony_ci}
351e41f4b71Sopenharmony_ci//业务结束,关闭跟踪。
352e41f4b71Sopenharmony_cihiTraceChain.end(traceId);
353e41f4b71Sopenharmony_ci```
354