自定义采集规则¶
本文用于承载 C++ SDK 的手动 RUM 采集能力。
Action¶
使用方法¶
/**
* action 开始
*
* @param actionName action 名称
* @param actionType action 类型
*/
void startAction(std::string actionName, std::string actionType);
/**
* action 结束
*/
void stopAction();
代码示例¶
View¶
使用方法¶
/**
* view 开始
*
* @param viewName 当前页面名称
*/
void startView(std::string viewName);
/**
* view 结束
*/
void 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);