mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
39 lines • 1.53 kB
TypeScript
/**
* LogRingBuffer —— 进程内的日志环形缓冲。
*
* 后端使用裸 `console.log` / `console.error`,没有日志库。为了让 SSE 日志端点
* (`GET /api/logs/stream`)能向新连接的客户端回放「最近 100 条」历史日志,
* 我们在进程内维护一个固定容量的环形缓冲:每条日志带时间戳与级别,订阅者可
* 实时收到新增日志。
*
* 设计要点:
* - 单例(`logRingBuffer`),全进程共享
* - `push` 超容量时丢弃最旧条目(FIFO)
* - `subscribe` 返回反订阅函数,便于 SSE 连接关闭时清理
*/
export type LogLevel = 'log' | 'error' | 'warn';
export interface LogEntry {
/** ISO 时间戳 */
timestamp: string;
level: LogLevel;
/** 单行日志文本(多行 console 入参已 join) */
line: string;
}
export type LogSubscriber = (entry: LogEntry) => void;
export declare class LogRingBuffer {
private readonly capacity;
private buffer;
private readonly subscribers;
constructor(capacity?: number);
/** 追加一条日志并通知订阅者 */
push(level: LogLevel, args: unknown[]): void;
/** 返回当前缓冲区快照(按时间正序) */
recent(): LogEntry[];
/** 订阅新增日志,返回反订阅函数 */
subscribe(fn: LogSubscriber): () => void;
/** 当前条目数(测试 / 诊断用) */
size(): number;
}
/** 全进程共享单例 */
export declare const logRingBuffer: LogRingBuffer;
//# sourceMappingURL=LogRingBuffer.d.ts.map