@skyra/logger
Version:
A lightweight logger system with level support
91 lines (89 loc) • 3.69 kB
JavaScript
import { redBright, red, yellow, blue, magenta, gray } from 'colorette';
export * from 'colorette';
import { format, inspect } from 'util';
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
var _Logger = class _Logger {
constructor(options = {}) {
/**
* The depth of the inspect.
*/
__publicField(this, "level");
/**
* The inspect depth when logging objects.
*/
__publicField(this, "depth");
/**
* The context for each logging level.
*/
__publicField(this, "levels");
this.level = options.level ?? _Logger.Level.Info;
this.depth = options.depth ?? 0;
this.levels = {
[_Logger.Level.Trace]: { color: gray, method: "trace", name: "TRACE" },
[_Logger.Level.Debug]: { color: magenta, method: "debug", name: "DEBUG" },
[_Logger.Level.Info]: { color: blue, method: "info", name: "INFO" },
[_Logger.Level.Warn]: { color: yellow, method: "warn", name: "WARN" },
[_Logger.Level.Error]: { color: red, method: "error", name: "ERROR" },
[_Logger.Level.Fatal]: { color: redBright, method: "error", name: "FATAL" },
...options.levels
};
}
enabled(level) {
return level >= this.level;
}
disabled(level) {
return level < this.level;
}
trace(value, ...args) {
if (this.enabled(_Logger.Level.Trace)) this.write(this.levels[_Logger.Level.Trace], value, args);
}
debug(value, ...args) {
if (this.enabled(_Logger.Level.Debug)) this.write(this.levels[_Logger.Level.Debug], value, args);
}
info(value, ...args) {
if (this.enabled(_Logger.Level.Info)) this.write(this.levels[_Logger.Level.Info], value, args);
}
warn(value, ...args) {
if (this.enabled(_Logger.Level.Warn)) this.write(this.levels[_Logger.Level.Warn], value, args);
}
error(value, ...args) {
if (this.enabled(_Logger.Level.Error)) this.write(this.levels[_Logger.Level.Error], value, args);
}
fatal(value, ...args) {
if (this.enabled(_Logger.Level.Fatal)) this.write(this.levels[_Logger.Level.Fatal], value, args);
}
write(context, value, args) {
const header = `[${context.color(this.time)}] ${context.color(context.name)} (${process.pid}): `;
const formatted = typeof value === "string" ? format(value, ...args) : inspect(value, { colors: true });
console[context.method](`${header}${formatted.replaceAll("\n", `
${header}`)}`);
}
get time() {
const date = /* @__PURE__ */ new Date();
const YYYY = String(date.getUTCFullYear());
const MM = String(date.getUTCMonth() + 1).padStart(2, "0");
const DD = String(date.getUTCDate()).padStart(2, "0");
const hh = String(date.getUTCHours()).padStart(2, "0");
const mm = String(date.getUTCMinutes()).padStart(2, "0");
const ss = String(date.getUTCSeconds()).padStart(2, "0");
return `${YYYY}/${MM}/${DD}-${hh}:${mm}:${ss}`;
}
};
__name(_Logger, "Logger");
var Logger = _Logger;
((Logger2) => {
((Level2) => {
Level2[Level2["Trace"] = 0] = "Trace";
Level2[Level2["Debug"] = 1] = "Debug";
Level2[Level2["Info"] = 2] = "Info";
Level2[Level2["Warn"] = 3] = "Warn";
Level2[Level2["Error"] = 4] = "Error";
Level2[Level2["Fatal"] = 5] = "Fatal";
})(Logger2.Level || (Logger2.Level = {}));
})(Logger || (Logger = {}));
export { Logger };
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map