사용자 지정 수집 규칙¶
이 문서는 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);