@qiniu/miku-delivery-mp-ks
Version:
Kuaishou Mini Program SDK for Miku Delivery
56 lines (55 loc) • 1.64 kB
TypeScript
/**
* @file 日志上报处理
* @desc 参考文档 https://cf.qiniu.io/pages/viewpage.action?pageId=107318296
* @todo - 日志持久化存储
*/
import type { AppInfo } from '../common/index';
import { Fetch } from '../utils/fetch/index';
export type LogData = Record<string, unknown>;
type BufferedLogData = LogData & {
/** 时间戳,单位 ms */
ts: number;
};
type GroupedLogs = {
schema: string;
logs: BufferedLogData[];
};
export declare const apiPrefix: string;
export default class Logger {
/** 应用信息 */
private appInfo;
/** 请求发送实现 */
private fetch;
/** 最大累计待上报条数 */
private flushNum;
/** 最大上报延迟,单位秒 */
private flushWait;
constructor(
/** 应用信息 */
appInfo: AppInfo,
/** 请求发送实现 */
fetch?: Fetch,
/** 最大累计待上报条数 */
flushNum?: number,
/** 最大上报延迟,单位秒 */
flushWait?: number);
private env;
private callApiLog;
/** 上报行为的互斥控制 */
private flushMutex;
/** 累计待上报的日志,从老到新排 */
private buffer;
/** 把所有记录下的日志进行上报 */
private flush;
/**
* 检查是否要上报,满足以下条件之一则上报:
* 1. 累计未上报 $flushNum 条
* 2. $flushWait 秒
*/
private tryFlush;
/** 记录单条日志 */
log(schemaName: string, logData: LogData): void;
}
/** 组装打点请求的 body,多个 Schema 日志以空行间隔 */
export declare function getLogBody(logs: GroupedLogs[]): string;
export {};