跳到主要内容

协议扩展

本文档介绍了 SDK 基于自定义执行单元相关接口的使用及说明。

创建执行单元

注意:startSpanWithName:operation: 需和 finish或finishWithStatus: 成对调用。

  • 接口
+ (id<NBSSpan>)startSpanWithName:(NSString *)name operation:(NSString *)operation;
  • 参数
参数类型说明
nameNSStringspan 名称,不能为空,长度限制为1024个字符,超过截取前1024个字符
operationNSStringspan所属的operation名称,如websocket,不能为空,长度限制为128个字符,超过截取前128个字符
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span finish];

完成执行单元

注意:startSpanWithName:operation: 需和 finish或finishWithStatus: 成对调用。

  • 接口
- (void)finish;

- (void)finishWithStatus:(NBSSpanStatus)status;
  • 说明

完成执行单元提供了两个方法 finishfinishWithStatus: ,调用 finish 完成执行单元时状态值默认为 NBSSpanStatusSuccess ,而 finishWithStatus: 可以设置完成执行单元时的状态;可根据需求调用相应完成执行单元接口。

  • 参数
参数类型说明
statusNBSSpanStatusstatus状态,值可为:NBSSpanStatusUndefined、 NBSSpanStatusSuccess、NBSSpanStatusFailed
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span finishWithStatus:NBSSpanStatusSuccess];

创建子执行单元

注意:startChildWithName:operation: 需和 finish或finishWithStatus: 成对调用。

  • 接口
- (id<NBSSpan>)startChildWithName:(NSString *)name operation:(NSString *)operation;

- (id<NBSSpan>)startChildWithName:(NSString *)name operation:(NSString *)operation description:(nullable NSString *)description;
  • 参数
参数类型说明
nameNSString名称;不能为空,长度限制为1024字符,超过截取前1024字符。
operationNSString类别;不能为空,长度限制为128字符,超过截取前128字符
descriptionNSString描述;长度限制为1024字符,超过截取前1024字符
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
id<NBSSpan> sub = [span startChildWithName:@"sub_name" operation:@"sub_operation"];
[sub finishWithStatus:NBSSpanStatusSuccess];
[span finishWithStatus:NBSSpanStatusSuccess];

设置 Data 数据

  • 接口
- (void)setDataValue:(nullable id)value forKey:(NSString *)key;
  • 参数
参数类型说明
valueiddata数据的value值
keyNSStringdata数据的key值,key值相同时覆盖value值
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setDataValue:@"dataValue" forKey:@"dataKey"];
[span finishWithStatus:NBSSpanStatusSuccess];

设置 Tag 数据

  • 接口
- (void)setTagValue:(NSString *)value forKey:(NSString *)key;
  • 参数
参数类型说明
valueNSStringTag数据的value值
keyNSStringTag数据的key值,key值相同时覆盖value值
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setTagValue:@"tagValue" forKey:@"tagKey"];
[span finishWithStatus:NBSSpanStatusSuccess];

设置 Metric 数据

  • 接口
- (void)setMetricValue:(NSNumber *)value forKey:(NSString *)key;

- (void)setMetricValue:(NSNumber *)value unit:(NSString *)unit forKey:(NSString *)key;
  • 参数
参数类型说明
valueNSNumberMetric数据的value值
unitNSStringvalue的单位名称,比如毫秒“ms”,保留单位类型见NBSDefines.h中的NBSSpanMetricUnitNames[ ],支持自定义单位
keyNSStringMetric数据的key值,key值相同时覆盖value值
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setMetricValue:@100 unit:@"ms" forKey:@"time"];
[span finishWithStatus:NBSSpanStatusSuccess];

移除 Data 数据

  • 接口
- (void)removeDataForKey:(NSString *)key;
  • 参数
参数类型说明
keyNSStringdata数据的key值
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setDataValue:@"dataValue" forKey:@"dataKey"];
[span removeDataForKey:@"dataKey"];
[span finishWithStatus:NBSSpanStatusSuccess];

移除 Tag 数据

  • 接口
- (void)removeTagForKey:(NSString *)key;
  • 参数
参数类型说明
keyNSStringTag数据的key值
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setTagValue:@"tagValue" forKey:@"tagKey"];
[span removeTagForKey:@"tagKey"];
[span finishWithStatus:NBSSpanStatusSuccess];

移除 Metric 数据

  • 接口
- (void)removeMetricForKey:(NSString *)key;
  • 参数
参数类型说明
keyNSStringmetric数据的key值
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setMetricValue:@100 unit:@"ms" forKey:@"time"];
[span removeMetricForKey:@"time"];
[span finishWithStatus:NBSSpanStatusSuccess];

设置 Status

  • 接口
- (void)setStatus:(NBSSpanStatus)status;
  • 参数
参数类型说明
statusNBSSpanStatus设置span的状态
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setStatus:NBSSpanStatusSuccess];
[span finish];

设置 Duration

  • 接口
- (void)setDuration:(NSNumber *)value;
  • 参数
参数类型说明
valueNSNumberspan执行耗时,默认耗时为startSpanWithName 到 finish。
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setDuration:@100];
[span finish];

设置 StatusCode

  • 接口
- (void)setStatusCode:(NSString *)value;
  • 参数
参数类型说明
valueNSStringspan的statusCode,默认值为0
  • 示例
id<NBSSpan> span = [NBSAppAgent startSpanWithName:@"span_name" operation:@"span_operation"];
[span setStatusCode:@"200"];
[span finish];