@be-link/cls-logger 1.0.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/dist/ClsLogger.d.ts +92 -0
- package/dist/ClsLogger.d.ts.map +1 -0
- package/dist/behaviorMonitor.d.ts +5 -0
- package/dist/behaviorMonitor.d.ts.map +1 -0
- package/dist/deviceInfo.d.ts +3 -0
- package/dist/deviceInfo.d.ts.map +1 -0
- package/dist/errorMonitor.d.ts +5 -0
- package/dist/errorMonitor.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +2268 -0
- package/dist/index.js +2274 -0
- package/dist/index.umd.js +2278 -0
- package/dist/internal.d.ts +20 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/performanceMonitor.d.ts +5 -0
- package/dist/performanceMonitor.d.ts.map +1 -0
- package/dist/requestMonitor.d.ts +9 -0
- package/dist/requestMonitor.d.ts.map +1 -0
- package/dist/types.d.ts +246 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +38 -0
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# @be-link/cls-logger
|
|
2
|
+
|
|
3
|
+
腾讯云 CLS(`tencentcloud-cls-sdk-js-web`)日志上报封装,参考仓库内 `@be-link/utils` 的构建方式(Rollup 打包 + tsc 仅产出 d.ts)。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @be-link/cls-logger
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 使用
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import clsLogger, { ClsLogger } from '@be-link/cls-logger';
|
|
15
|
+
|
|
16
|
+
clsLogger.init({
|
|
17
|
+
topic_id: 'xxx',
|
|
18
|
+
projectName: 'my-project',
|
|
19
|
+
generateBaseFields: () => ({ env: 'prod', uid: 'u_1' }),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// 直接上报(展开字段)
|
|
23
|
+
clsLogger.put({ event: 'login', ok: true });
|
|
24
|
+
|
|
25
|
+
// 直接上报(JSON 放进单个 key,默认 “日志内容”)
|
|
26
|
+
clsLogger.putJson({ event: 'click', x: 1, y: 2 });
|
|
27
|
+
|
|
28
|
+
// 入队(写入 localStorage,默认 15 条自动 flush)
|
|
29
|
+
clsLogger.enqueue({ event: 'page_view', page: '/home' });
|
|
30
|
+
```
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { AsyncClient } from 'tencentcloud-cls-sdk-js-web';
|
|
2
|
+
import type { ClsLoggerInitOptions, FlatFields, PutOptions, QueueItem, ReportLog } from './types';
|
|
3
|
+
export declare class ClsLogger {
|
|
4
|
+
private client;
|
|
5
|
+
private topicId;
|
|
6
|
+
private endpoint;
|
|
7
|
+
private retryTimes;
|
|
8
|
+
private source;
|
|
9
|
+
private projectId;
|
|
10
|
+
private projectName;
|
|
11
|
+
private appId;
|
|
12
|
+
private appVersion;
|
|
13
|
+
private envType;
|
|
14
|
+
private userGenerateBaseFields;
|
|
15
|
+
private autoGenerateBaseFields;
|
|
16
|
+
private storageKey;
|
|
17
|
+
private batchSize;
|
|
18
|
+
private memoryQueue;
|
|
19
|
+
private batchMaxSize;
|
|
20
|
+
private batchIntervalMs;
|
|
21
|
+
private batchTimer;
|
|
22
|
+
private failedCacheKey;
|
|
23
|
+
private failedCacheMax;
|
|
24
|
+
private requestMonitorStarted;
|
|
25
|
+
private errorMonitorStarted;
|
|
26
|
+
private performanceMonitorStarted;
|
|
27
|
+
private behaviorMonitorStarted;
|
|
28
|
+
private behaviorMonitorCleanup;
|
|
29
|
+
init(options: ClsLoggerInitOptions): void;
|
|
30
|
+
private getBaseFields;
|
|
31
|
+
private startRequestMonitor;
|
|
32
|
+
private startErrorMonitor;
|
|
33
|
+
private startPerformanceMonitor;
|
|
34
|
+
private startBehaviorMonitor;
|
|
35
|
+
/**
|
|
36
|
+
* 停止行为埋点监听(PV/UV/点击)
|
|
37
|
+
* - 如需重启:可再次调用 init(或自行调用 init 后的默认启动逻辑)
|
|
38
|
+
*/
|
|
39
|
+
stopBehaviorMonitor(): void;
|
|
40
|
+
getInstance(): AsyncClient;
|
|
41
|
+
private detectEnvType;
|
|
42
|
+
/**
|
|
43
|
+
* 直接上报:埋点入参必须是一维(扁平)Object
|
|
44
|
+
* - 非原始值(对象/数组等)会被自动 stringify 成 string
|
|
45
|
+
* - 最终会把 fields 展开成 CLS 的 content(key/value 都会转成 string)
|
|
46
|
+
*/
|
|
47
|
+
put(fields: FlatFields, options?: PutOptions): void;
|
|
48
|
+
/**
|
|
49
|
+
* 直接上报:把 data 序列化后放入指定 key(默认 “日志内容”)
|
|
50
|
+
*/
|
|
51
|
+
putJson(data: unknown, clsLoggerKey?: string, options?: PutOptions): void;
|
|
52
|
+
/**
|
|
53
|
+
* 入队:写入 localStorage 队列;达到 batchSize 自动 flush
|
|
54
|
+
* - 埋点入参必须是一维(扁平)Object,非原始值会被 stringify
|
|
55
|
+
*/
|
|
56
|
+
enqueue(fields: FlatFields, options?: PutOptions): void;
|
|
57
|
+
/**
|
|
58
|
+
* 从 localStorage 读取队列并批量上报
|
|
59
|
+
*/
|
|
60
|
+
flush(): void;
|
|
61
|
+
/**
|
|
62
|
+
* 批量上报(每条 item.data 展开为 log content)
|
|
63
|
+
*/
|
|
64
|
+
putBatch(queue: QueueItem[]): void;
|
|
65
|
+
/**
|
|
66
|
+
* 参考《一、概述》:统一上报入口(内存队列 + 批量发送)
|
|
67
|
+
*/
|
|
68
|
+
report(log: ReportLog): void;
|
|
69
|
+
info(message: string, data?: FlatFields): void;
|
|
70
|
+
warn(message: string, data?: FlatFields): void;
|
|
71
|
+
error(message: string, data?: FlatFields): void;
|
|
72
|
+
track(trackType: string, data?: FlatFields): void;
|
|
73
|
+
/**
|
|
74
|
+
* 立即发送内存队列
|
|
75
|
+
*/
|
|
76
|
+
flushBatch(): Promise<void>;
|
|
77
|
+
private buildReportFields;
|
|
78
|
+
private sendReportLogs;
|
|
79
|
+
private retrySendReportLogs;
|
|
80
|
+
private cacheFailedReportLogs;
|
|
81
|
+
flushFailed(): void;
|
|
82
|
+
/**
|
|
83
|
+
* 统计/计数类日志:按字段展开上报(若 data 为空默认 1)
|
|
84
|
+
*/
|
|
85
|
+
stat(param: {
|
|
86
|
+
pageName: string;
|
|
87
|
+
scene: string;
|
|
88
|
+
subScene: string;
|
|
89
|
+
data?: number | string;
|
|
90
|
+
}): void;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=ClsLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClsLogger.d.ts","sourceRoot":"","sources":["../src/ClsLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BehaviorMonitorOptions, EnvType, FlatFields } from './types';
|
|
2
|
+
type ReportFn = (type: string, data: FlatFields) => void;
|
|
3
|
+
export declare function installBehaviorMonitor(report: ReportFn, envType: EnvType, options?: BehaviorMonitorOptions): () => void;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=behaviorMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"behaviorMonitor.d.ts","sourceRoot":"","sources":["../src/behaviorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG3E,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AA8FzD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,sBAA2B,GACnC,MAAM,IAAI,CA4WZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceInfo.d.ts","sourceRoot":"","sources":["../src/deviceInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAwMtE,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,GAC5C,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAyC3B"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ErrorMonitorOptions, FlatFields } from './types';
|
|
2
|
+
type ReportFn = (type: string, data: FlatFields) => void;
|
|
3
|
+
export declare function installErrorMonitor(report: ReportFn, opts?: boolean | ErrorMonitorOptions | undefined): void;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=errorMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorMonitor.d.ts","sourceRoot":"","sources":["../src/errorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG/D,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AA8MzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAO,GAAG,mBAAmB,GAAG,SAAc,GAAG,IAAI,CAmBhH"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,eAAO,MAAM,SAAS,WAAkB,CAAC;AACzC,eAAe,SAAS,CAAC"}
|