미니앱 로그 수집¶
미니앱이 다양한 수준의 로그 데이터(해당 source:browser_log 메트릭 유형 로그 데이터)를 Guance로 능동적으로 전송합니다.
기능¶
- 사용자 정의 로그 데이터 수집, SDK를 클라이언트 애플리케이션에 통합하여 다양한 시나리오에 맞춰 로그 데이터 수집
- 애플리케이션 측 오류 정보(네트워크 오류, console 오류 및 JS 오류 포함)를 자동 수집하여 DataFlux로 전송
- 사용자 정의 오류 수준(
debug,critical,error,info,warn), 사용자 정의 Logger 객체 및 사용자 정의 Log 필드 - RUM 관련 데이터를 자동 수집하여 RUM 비즈니스 시나리오와 연계(rum SDK를 최신 버전으로 업데이트해야 함)
시작하기¶
사전 준비¶
-
SDK 도입:
NPM,CDN방식으로 SDK를 애플리케이션에 도입하고, 초기화 후 전역 변수에 저장하여 다른 페이지에서 참조할 수 있도록 함 -
미니앱 클라이언트 지원: WeChat, Baidu, Alipay, Toutiao 등 대부분의 미니앱
연동 방식¶
- DataKit이 설치 및 공개망 접근 가능하도록 구성되고 IP 지리 정보 라이브러리가 설치되었는지 확인
- 콘솔에서
applicationId,env,version등의 파라미터를 획득하여 애플리케이션 연동 시작 - SDK 통합 시
datakitOrigin을 DataKit의 도메인 또는 IP로 설정
- 콘솔에서
applicationId,clientToken및site등의 파라미터를 획득하여 애플리케이션 연동 시작 - SDK 통합 시
datakitOrigin을 구성할 필요 없이, 데이터는 기본적으로 공개망 DataWay로 전송됨
NPM 도입¶
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
const { datafluxLogs } = require('@cloudcare/dataflux-rum-miniapp-logs')
// RUM 초기화
datafluxLogs.init({
datakitOrigin: '<DATAKIT ORIGIN>'
site: "http://172.16.212.186:9529", // 공개망 DataWay 해당 사이트의 도메인
clientToken: "a993f53a8ea04bc6b9350e5e670a3a3b", // 공개망 DataWay 전송에 필요한 클라이언트 토큰
service: 'minapp',
env: 'prod',
version: '1.0.0'
})
//#endif
CDN 로컬 파일 다운로드 방식(다운로드 주소)¶
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
const { datafluxLogs } = require('@cloudcare/dataflux-rum-miniapp-logs')
// RUM 초기화
datafluxLogs.init({
datakitOrigin: '<DATAKIT ORIGIN>'
service: 'miniapp',
env: 'prod',
version: '1.0.0'
})
//#endif
구성¶
초기화 파라미터¶
| 파라미터 | 유형 | 필수 여부 | 기본값 | 설명 |
|---|---|---|---|---|
datakitOrigin |
String | 예 | DataKit 데이터 전송 Origin 참고: 프로토콜(// 포함), 도메인(또는 IP 주소)[및 포트 번호]예: https://www.datakit.com, http://100.20.34.3:8088 |
|
clientToken |
String | 예 | openway 방식으로 데이터 전송 시 필요한 토큰, Guance 콘솔에서 획득, 필수(공용 openway 방식 연동). | |
site |
String | 예 | 공용 openway 방식 데이터 전송 주소, Guance 콘솔에서 획득, 필수(공용 openway 방식 연동). | |
service |
String | 아니오 | browser |
로그 Service 이름 |
env |
String | 아니오 | Web 애플리케이션 현재 환경, 예: Prod: 프로덕션 환경; Gray: 카나리 환경; Pre: 사전 프로덕션 환경; Common: 일상 환경; Local: 로컬 환경; | |
version |
String | 아니오 | Web 애플리케이션의 버전 번호 | |
sampleRate |
Number | 아니오 | 100 |
메트릭 데이터 수집 비율: 100은 전체 수집, 0은 수집 안 함 |
forwardErrorsToLogs |
Boolean | 아니오 | true |
false로 설정하면 console.error, JS 오류 및 네트워크 오류가 DataFlux 로그 데이터로 수집되지 않음 |
사용¶
SDK가 애플리케이션에서 초기화된 후, 노출된 SDK API를 통해 로그 데이터를 사용자 정의할 수 있습니다.
NPM¶
import { datafluxLogs } from "@cloudcare/dataflux-rum-miniapp-logs"
datafluxLogs.logger.info("Button clicked", { name: "buttonName", id: 123 })
반환 데이터 구조¶
{
"service": "miniapp",
"session": {
"id": "c549c2b8-4955-4f74-b7f8-a5f42fc6e79b"
},
"type": "logger",
"_dd": {
"sdk_name": "miniapp LOG SDK",
"sdk_version": "1.0.0",
"env": "",
"version": ""
},
"device": {
"platform_version": "8.0.5",
"model": "iPhone 6/7/8 Plus",
"app_framework_version": "2.23.3",
"os": "OS",
"os_version": "10.14.6",
"os_version_major": "10",
"screen_size": "414*736",
"network_type": "3g",
"divice": "devtools"
},
"user": {},
"date": 1621321916756,
"view": {
"referrer": "",
"name": "pages/index/index",
"id": "5dce64f4-8d6d-411a-af84-c41653ccd94a"
},
"application": {
"id": "app_idxxxxxx"
},
"message": "XHR error get http://testing-ft2x-api.cloudcare.cn/api/v1/workspace/xxx",
"status": "error",
"error": {
"source": "network",
"stack": "Failed to load"
},
"resource": {
"method": "get",
"status": 0,
"status_group": 0,
"url": "http://testing-ft2x-api.cloudcare.cn/api/v1/workspace/xxx",
"url_host": "testing-ft2x-api.cloudcare.cn",
"url_path": "/api/v1/workspace/xxx",
"url_path_group": "/api/?/workspace/xxx"
}
}
Status 파라미터¶
SDK 초기화 후 제공되는 log API를 사용하여 다양한 유형의 상태를 정의할 수 있습니다.
log (message: string, messageContext: Context, status? = 'debug' | 'info' | 'warning' | 'error' | 'critical')
사용¶
import { datafluxLogs } from '@cloudcare/dataflux-rum-miniapp-logs'
datafluxLogs.logger.log(<MESSAGE>,<JSON_ATTRIBUTES>,<STATUS>);
파라미터 설명¶
| 파라미터 | 설명 |
|---|---|
<MESSAGE> |
DataFlux 로그의 Message 필드. |
<JSON_ATTRIBUTES> |
Message를 설명하는 추가 데이터, Json 객체. |
<STATUS> |
로그 수준, 가능한 값: debug, info, warning, error, critical. |