@gulibs/react-vintl
Version:
Type-safe i18n library for React with Vite plugin and automatic type inference
79 lines • 2.52 kB
TypeScript
/**
* Logger 工具
* 在生产环境下禁用 debug 和 warn 输出
*
* 日志去重机制:
* - 默认启用去重功能,相同消息在时间窗口内(默认 5 秒)只输出一次
* - 使用消息内容的序列化字符串作为去重键
* - 自动清理过期的去重缓存条目,避免内存泄漏
* - 错误日志使用更长的去重时间窗口(10 秒),确保重要错误不被过度抑制
* - 可通过配置禁用去重:`logger.setConfig({ deduplicate: false })`
*/
interface LoggerConfig {
/** 是否启用 debug 日志 */
debug?: boolean;
/** 是否启用 info 日志 */
info?: boolean;
/** 是否启用 warn 日志 */
warn?: boolean;
/** 是否启用 error 日志 */
error?: boolean;
/** 是否启用日志去重(默认 true) */
deduplicate?: boolean;
/** 去重时间窗口(毫秒,默认 5000) */
deduplicationWindow?: number;
}
declare class Logger {
private config;
private deduplicationCache;
constructor(config?: LoggerConfig);
/**
* 检查消息是否应该被去重
* @param messageKey 消息的唯一标识(通常是序列化后的参数)
* @returns true 如果消息应该被输出,false 如果应该被抑制
*/
private shouldLog;
/**
* 清理过期的去重缓存条目
*/
private cleanupDeduplicationCache;
/**
* 生成消息的唯一键(用于去重)
*/
private getMessageKey;
/**
* 输出 debug 日志(仅在开发环境)
*/
debug(...args: unknown[]): void;
/**
* 输出 info 日志(仅在开发环境)
* 用于一般信息日志,不同于 debug
*/
info(...args: unknown[]): void;
/**
* 输出 warn 日志(仅在开发环境)
* 支持去重机制,相同消息在时间窗口内只输出一次
*/
warn(...args: unknown[]): void;
/**
* 输出 error 日志(始终输出)
* 错误日志使用更长的去重时间窗口(10秒),确保重要错误不会被过度抑制
*/
error(...args: unknown[]): void;
/**
* 更新配置
*/
setConfig(config: Partial<LoggerConfig>): void;
/**
* 清除去重缓存(用于测试或重置)
*/
clearDeduplicationCache(): void;
/**
* 获取当前配置
*/
getConfig(): Readonly<Required<LoggerConfig>>;
}
export declare const logger: Logger;
export { Logger };
export type { LoggerConfig };
//# sourceMappingURL=logger.d.ts.map