UNPKG

chia-agent

Version:
114 lines (113 loc) 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLogger = exports.setLogLevel = exports.getLogLevel = void 0; const logPriority = { none: 9999, error: 4, warning: 3, info: 2, debug: 1, }; class ConsoleWriter { write(message) { console.log(message); } } let currentLogLevel = "error"; function getLogLevel() { return currentLogLevel; } exports.getLogLevel = getLogLevel; function setLogLevel(logLevel) { return currentLogLevel = logLevel; } exports.setLogLevel = setLogLevel; function stringify(obj, indent) { if (typeof obj === "string") { return obj; } else if (typeof obj === "number") { return `${obj}`; } else if (typeof obj === "boolean") { return `${obj}`; } else if (typeof obj === "bigint") { return `${obj}`; } else if (typeof obj === "symbol") { return obj.toString(); } else if (typeof obj === "undefined") { return "undefined"; } else if (typeof obj === "function") { return "[Function]"; } const seen = new WeakSet(); return JSON.stringify(obj, (k, v) => { if (typeof v === "object" && v !== null) { if (seen.has(v)) { return undefined; } seen.add(v); } else if (typeof v === "bigint") { return `${v}n`; } return v; }, indent); } const loggers = {}; function getLogger(writer) { const w = writer || "console"; const logger = loggers[w]; if (logger && logger.loglevel === currentLogLevel) { return logger; } return loggers[w] = Logger.getLogger(currentLogLevel, w); } exports.getLogger = getLogger; class Logger { constructor(logLevel, writer) { this.loglevel = "error"; if (writer === "console") { this._writer = new ConsoleWriter(); } else if (writer) { this._writer = writer; } else { this._writer = new ConsoleWriter(); } this.loglevel = logLevel; } static getLogger(logLevel, writer) { return new Logger(logLevel, writer); } setLogLevel(level) { this.loglevel = level; } shouldWrite(logLevel) { return logPriority[this.loglevel] <= logPriority[logLevel]; } formatMessage(level, body) { return `${(new Date()).toLocaleString()} [${level.toUpperCase()}] ${body}`; } debug(msg) { if (this.shouldWrite("debug")) { this._writer.write(this.formatMessage("debug", stringify(msg))); } } info(msg) { if (this.shouldWrite("info")) { this._writer.write(this.formatMessage("info", stringify(msg))); } } warning(msg) { if (this.shouldWrite("warning")) { this._writer.write(this.formatMessage("warning", stringify(msg))); } } error(msg) { if (this.shouldWrite("error")) { this._writer.write(this.formatMessage("error", stringify(msg))); } } }