UNPKG

kist

Version:

Lightweight Package Pipeline Processor with Plugin Architecture

55 lines 1.95 kB
import { LoggerStyles } from "./LoggerStyles.js"; export class Logger { constructor(logLevel = "info") { this.logLevel = logLevel; } static getInstance(logLevel = "info") { if (!Logger.instance) { Logger.instance = new Logger(logLevel); } return Logger.instance; } static resetInstance() { Logger.instance = null; } log(level, context, message, fgStyle, bgStyle = LoggerStyles.Reset) { if (this.shouldLog(level)) { const formattedMessage = `${fgStyle}${bgStyle}[${level.toUpperCase()}]${LoggerStyles.Reset} [${LoggerStyles.Cyan}${context}${LoggerStyles.Reset}] ${message}`; console[level === "error" ? "error" : level === "warn" ? "warn" : "log"](formattedMessage); } } shouldLog(level) { const levels = ["debug", "info", "warn", "error"]; return levels.indexOf(level) >= levels.indexOf(this.logLevel); } logInfo(context, message) { this.log("info", context, message, LoggerStyles.Blue); } logWarn(context, message) { this.log("warn", context, message, LoggerStyles.Yellow); } logError(context, message, error) { const formattedMessage = this.formatError(message, error); this.log("error", context, formattedMessage, LoggerStyles.Red, LoggerStyles.BgYellow); } logDebug(context, message) { this.log("debug", context, message, LoggerStyles.Magenta); } setLogLevel(level) { this.logLevel = level; } formatError(message, error) { if (error instanceof Error) { return `${message}: ${error.message}`; } else if (typeof error === "string") { return `${message}: ${error}`; } else if (error) { return `${message}: ${JSON.stringify(error)}`; } return message; } } Logger.instance = null; //# sourceMappingURL=Logger.js.map