UNPKG

@wavequery/conductor

Version:
113 lines 3.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = exports.LogLevel = void 0; var LogLevel; (function (LogLevel) { LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG"; LogLevel[LogLevel["INFO"] = 1] = "INFO"; LogLevel[LogLevel["WARN"] = 2] = "WARN"; LogLevel[LogLevel["ERROR"] = 3] = "ERROR"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { constructor(config) { this.colors = { debug: "\x1b[34m", // blue info: "\x1b[32m", // green warn: "\x1b[33m", // yellow error: "\x1b[31m", // red reset: "\x1b[0m", }; this.config = { enableTimestamp: true, enableColors: true, prefix: "", customFormatter: undefined, transport: undefined, ...config, }; } static getInstance(config) { if (!Logger.instance) { Logger.instance = new Logger(config || { level: LogLevel.INFO }); } return Logger.instance; } debug(message, meta) { this.log(LogLevel.DEBUG, message, meta); } info(message, meta) { this.log(LogLevel.INFO, message, meta); } warn(message, meta) { this.log(LogLevel.WARN, message, meta); } error(message, meta) { this.log(LogLevel.ERROR, message, meta); } log(level, message, meta) { if (level < this.config.level) return; const formattedMessage = this.config.customFormatter ? this.config.customFormatter(level, message, meta) : this.formatMessage(level, message, meta); if (this.config.transport) { this.config.transport(level, formattedMessage, meta); } else { this.defaultTransport(level, formattedMessage); } } formatMessage(level, message, meta) { const parts = []; if (this.config.enableTimestamp) { parts.push(`[${new Date().toISOString()}]`); } if (this.config.prefix) { parts.push(`[${this.config.prefix}]`); } parts.push(`[${LogLevel[level]}]`); parts.push(message); if (meta) { parts.push(JSON.stringify(meta, null, 2)); } const finalMessage = parts.join(" "); return this.config.enableColors ? this.colorize(level, finalMessage) : finalMessage; } colorize(level, message) { const color = this.getColorForLevel(level); return `${color}${message}${this.colors.reset}`; } getColorForLevel(level) { switch (level) { case LogLevel.DEBUG: return this.colors.debug; case LogLevel.INFO: return this.colors.info; case LogLevel.WARN: return this.colors.warn; case LogLevel.ERROR: return this.colors.error; default: return this.colors.reset; } } defaultTransport(level, message) { switch (level) { case LogLevel.ERROR: console.error(message); break; case LogLevel.WARN: console.warn(message); break; case LogLevel.INFO: console.info(message); break; default: console.log(message); } } } exports.Logger = Logger; //# sourceMappingURL=logger.js.map