跳转至

自定义采集规则

本文用于承载 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 请求方法 GETPOST
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);

文档评价

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