@skyra/logger
Version:
A lightweight logger system with level support
104 lines (102 loc) • 3.78 kB
JavaScript
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);
return value;
};
// src/index.ts
export * from "colorette";
// src/lib/Logger.ts
import { blue, gray, magenta, red, redBright, yellow } from "colorette";
import { format, inspect } from "node:util";
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) => {
let Level;
((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";
})(Level = Logger2.Level || (Logger2.Level = {}));
})(Logger || (Logger = {}));
export {
Logger
};
//# sourceMappingURL=index.js.map