UNPKG

mstf-kit

Version:

一个现代化的 JavaScript/TypeScript 工具库,提供了丰富的常用工具函数

234 lines (233 loc) 4.93 kB
var LogLevel = /* @__PURE__ */ ((LogLevel2) => { LogLevel2[LogLevel2["NONE"] = 0] = "NONE"; LogLevel2[LogLevel2["ERROR"] = 1] = "ERROR"; LogLevel2[LogLevel2["WARN"] = 2] = "WARN"; LogLevel2[LogLevel2["INFO"] = 3] = "INFO"; LogLevel2[LogLevel2["DEBUG"] = 4] = "DEBUG"; return LogLevel2; })(LogLevel || {}); class Logger { /** * 创建 Logger 实例 * @param options 日志配置选项 */ constructor(options = {}) { this.enabled = options.enabled !== false; this.prefix = options.prefix || "[Logger]"; this.showTimestamp = options.showTimestamp || false; this.customHandler = options.customHandler; if (typeof options.level === "string") { this.level = this.parseLogLevel(options.level); } else { this.level = options.level !== void 0 ? options.level : 3; } } /** * 解析字符串形式的日志级别 */ parseLogLevel(level) { const levelMap = { "none": 0, "error": 1, "warn": 2, "info": 3, "debug": 4 /* DEBUG */ }; return levelMap[level.toLowerCase()] || 3; } /** * 格式化日志消息 */ formatMessage(...args) { const parts = []; if (this.showTimestamp) { const timestamp = (/* @__PURE__ */ new Date()).toISOString(); parts.push(`[${timestamp}]`); } parts.push(this.prefix); parts.push(...args); return parts; } /** * 输出日志 */ output(level, logLevel, consoleFn, ...args) { if (!this.enabled || this.level < logLevel) { return; } const formattedArgs = this.formatMessage(...args); if (this.customHandler) { this.customHandler(level, this.prefix, ...args); } else { consoleFn(...formattedArgs); } } /** * 输出调试日志 * @param args 日志内容 */ debug(...args) { this.output("DEBUG", 4, console.log, ...args); } /** * 输出信息日志 * @param args 日志内容 */ log(...args) { this.output("INFO", 3, console.log, ...args); } /** * 输出信息日志(别名) * @param args 日志内容 */ info(...args) { this.output("INFO", 3, console.info, ...args); } /** * 输出警告日志 * @param args 日志内容 */ warn(...args) { this.output("WARN", 2, console.warn, ...args); } /** * 输出错误日志 * @param args 日志内容 */ error(...args) { this.output("ERROR", 1, console.error, ...args); } /** * 输出分组日志(开始) * @param label 分组标签 */ group(label) { if (this.enabled && this.level >= 3) { console.group(this.formatMessage(label).join(" ")); } } /** * 输出折叠的分组日志(开始) * @param label 分组标签 */ groupCollapsed(label) { if (this.enabled && this.level >= 3) { console.groupCollapsed(this.formatMessage(label).join(" ")); } } /** * 结束分组日志 */ groupEnd() { if (this.enabled && this.level >= 3) { console.groupEnd(); } } /** * 输出表格 * @param data 表格数据 */ table(data) { if (this.enabled && this.level >= 3) { console.table(data); } } /** * 输出对象的详细信息 * @param obj 对象 */ dir(obj) { if (this.enabled && this.level >= 4) { console.dir(obj); } } /** * 计时开始 * @param label 计时标签 */ time(label) { if (this.enabled && this.level >= 4) { console.time(`${this.prefix} ${label}`); } } /** * 计时结束 * @param label 计时标签 */ timeEnd(label) { if (this.enabled && this.level >= 4) { console.timeEnd(`${this.prefix} ${label}`); } } /** * 启用日志 */ enable() { this.enabled = true; } /** * 禁用日志 */ disable() { this.enabled = false; } /** * 设置日志级别 * @param level 日志级别 */ setLevel(level) { if (typeof level === "string") { this.level = this.parseLogLevel(level); } else { this.level = level; } } /** * 设置日志前缀 * @param prefix 前缀 */ setPrefix(prefix) { this.prefix = prefix; } /** * 获取当前是否启用 */ isEnabled() { return this.enabled; } /** * 获取当前日志级别 */ getLevel() { return this.level; } /** * 创建子 Logger * @param subPrefix 子前缀 * @returns 新的 Logger 实例 */ createChild(subPrefix) { return new Logger({ enabled: this.enabled, prefix: `${this.prefix}:${subPrefix}`, level: this.level, showTimestamp: this.showTimestamp, customHandler: this.customHandler }); } } function createLogger(options = {}) { return new Logger(options); } const defaultLogger = createLogger({ enabled: false, prefix: "[mstf-kit]" }); export { LogLevel, Logger, createLogger, Logger as default, defaultLogger };