跳转至

自定义采集规则

本文用于承载 C++ SDK 的手动 RUM 采集能力。

Action

使用方法

/**
 * action 开始
 *
 * @param actionName action 名称
 * @param actionType action 类型
 */
void startAction(std::string actionName, std::string actionType);

/**
 * action 结束
 */
void stopAction();

代码示例

sdk->startAction("just4test", "click");

View

使用方法

/**
 * view 开始
 *
 * @param viewName 当前页面名称
 */
void startView(std::string viewName);

/**
 * view 结束
 */
void stopView();

代码示例

sdk->startView("TEST_VIEW_ONE");
sdk->stopView();

Resource

使用方法

/**
 * resource 起始
 *
 * @param resourceId 资源 ID
 */
void startResource(std::string resourceId);

/**
 * resource 终止
 *
 * @param resourceId 资源 ID
 */
void stopResource(std::string resourceId);

/**
 * 设置网络传输内容
 *
 * @param resourceId    资源 ID
 * @param params        网络传输参数
 * @param netStatusBean 网络状态统计
 */
void addResource(std::string resourceId, ResourceParams params, NetStatus netStatusBean);
方法名 含义 必须 说明
NetStatus.fetchStartTime 请求开始时间 否
NetStatus.tcpTime TCP 连接耗时 否
NetStatus.dnsTime DNS 解析时间 否
NetStatus.responseTime 响应内容传输耗时 否
NetStatus.sslTime SSL 链接耗时 否
NetStatus.firstByteTime 从 DNS/SSL 到接收到首包的总时长 否
NetStatus.ttfb 请求响应时间,从发送请求到接收首包的时长 否
NetStatus.tcpStartTime TCP 开始时间 否
NetStatus.tcpEndTime TCP 结束时间 否
NetStatus.dnsStartTime DNS 开始时间 否
NetStatus.dnsEndTime DNS 结束时间 否
NetStatus.responseStartTime 响应开始时间 否
NetStatus.responseEndTime 响应结束时间 否
NetStatus.sslStartTime SSL 开始时间 否
NetStatus.sslEndTime SSL 结束时间 否
ResourceParams.url URL 地址 是
ResourceParams.requestHeader 请求头参数 否
ResourceParams.responseHeader 响应头参数 否
ResourceParams.responseConnection 响应 connection 否
ResourceParams.responseContentType 响应 Content-Type 否
ResourceParams.responseContentEncoding 响应 Content-Encoding 否
ResourceParams.resourceMethod 请求方法 否 GET、POST 等
ResourceParams.responseBody 返回 body 内容 否

代码示例

RestClient::init();
RestClient::Connection* conn = new RestClient::Connection(url);

RestClient::HeaderFields headers;
headers["Accept"] = "application/json";

RestClient::Response r = conn->get("/get");
RestClient::Connection::Info info = conn->GetInfo();

ResourceParams params;
params.resourceMethod = "GET";
params.requestHeader = convert(headers);
params.responseHeader = convert(r.headers);
params.responseBody = r.body;
params.responseConnection = "Keep-Alive";
params.responseContentEncoding = "UTF-8";
params.responseContentType = r.headers["Content-Type"];
params.url = url;
params.resourceStatus = r.code;

NetStatus status;
status.dnsTime = info.lastRequest.nameLookupTime * ns_factor;
status.tcpTime = (info.lastRequest.connectTime - info.lastRequest.nameLookupTime) * ns_factor;
status.sslTime = (info.lastRequest.appConnectTime - info.lastRequest.connectTime) * ns_factor;
status.ttfb = (info.lastRequest.startTransferTime - info.lastRequest.preTransferTime) * ns_factor;
status.responseTime = (info.lastRequest.totalTime - info.lastRequest.startTransferTime) * ns_factor;
status.firstByteTime = info.lastRequest.startTransferTime * ns_factor;

RestClient::disable();

Error

使用方法

/**
 * 添加错误信息
 *
 * @param log       日志
 * @param message   消息
 * @param errorType 错误类型
 * @param state     程序运行状态
 */
void addError(std::string log, std::string message, RUMErrorType errorType, AppState state);

代码示例

sdk->addError("test error 1", "first error", RUMErrorType::native_crash, AppState::UNKNOWN);
sdk->addError("test error 2", "second error", RUMErrorType::network_error, AppState::UNKNOWN);

LongTask

使用方法

/**
 * 添加长耗时任务
 *
 * @param log      日志
 * @param duration 持续时间(ns)
 */
void addLongTask(std::string log, long duration);

代码示例

sdk->addLongTask("test long task", 100010);

文档评价

文档内容是否对您有帮助?