clrsole
Version:
Colorful `console.log` for structured logging.
62 lines (61 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const node_util = require("node:util");
const baseLogFactory = require("base-log-factory");
const blfDebugAppender = require("blf-debug-appender");
const pc = require("picocolors");
function colorText(color, root, messages, depth) {
for (let i = 0, len = messages.length, tmp; i < len; i++) {
tmp = messages[i];
switch (typeof tmp) {
case "object":
tmp = node_util.inspect(tmp, { depth });
break;
case "symbol":
tmp = tmp.toString();
break;
}
root += ` ${tmp}`;
}
return pc[color](root);
}
const clrsole = {};
Object.entries(pc).forEach(([color, fn]) => {
if (typeof fn === "function") {
clrsole[color] = (...messages) => {
console.log(colorText(color, "", messages, Infinity));
};
}
});
function createConverter(specifier) {
if (specifier === "m") {
return (event) => {
return event.message.map((msg) => {
switch (typeof msg) {
case "object":
return node_util.inspect(msg);
case "symbol":
return msg.toString();
default:
return msg;
}
}).join(" ");
};
}
}
const debugAppender = new blfDebugAppender.DebugAppender({
layout: new baseLogFactory.PatternLayout(
"%d{HH:mm:ss} [%p] - %m",
createConverter
)
});
const factory = new baseLogFactory.LogFactory({
level: baseLogFactory.Level.WARN,
appenders: [debugAppender]
});
Object.defineProperty(exports, "Level", {
enumerable: true,
get: () => baseLogFactory.Level
});
exports.clrsole = clrsole;
exports.factory = factory;