chia-agent
Version:
chia rpc/websocket client library
114 lines (113 loc) • 3.09 kB
JavaScript
;
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)));
}
}
}