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.HiTrace。 20e41f4b71Sopenharmony_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.HiTrace。 37e41f4b71Sopenharmony_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.HiTrace。 51e41f4b71Sopenharmony_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.HiTrace。 64e41f4b71Sopenharmony_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