/** * @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; 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 {};