@sapphire/plugin-logger
Version:
Plugin for @sapphire/framework to have pretty console output
96 lines (93 loc) • 3.88 kB
JavaScript
;
var framework = require('@sapphire/framework');
var colorette = require('colorette');
var console = require('console');
var util = require('util');
var LoggerLevel_cjs = require('./LoggerLevel.cjs');
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 extends framework.Logger {
constructor(options = {}) {
super(options.level ?? framework.LogLevel.Info);
/**
* The console this writes to.
* @since 1.0.0
*/
__publicField(this, "console");
/**
* The formats supported by the logger.
* @since 1.0.0
*/
__publicField(this, "formats");
/**
* The string `write` will join values by.
* @since 1.0.0
*/
__publicField(this, "join");
/**
* The inspect depth when logging objects.
* @since 1.0.0
*/
__publicField(this, "depth");
this.console = new console.Console(options.stdout ?? process.stdout, options.stderr ?? process.stderr);
this.formats = _Logger.createFormatMap(options.format, options.defaultFormat);
this.join = options.join ?? " ";
this.depth = options.depth ?? 0;
}
/**
* Writes the log message given a level and the value(s).
* @param level The log level.
* @param values The values to log.
*/
write(level, ...values) {
if (level < this.level) return;
const method = this.levels.get(level) ?? "log";
const formatter = this.formats.get(level) ?? this.formats.get(framework.LogLevel.None);
this.console[method](formatter.run(this.preprocess(values)));
}
/**
* Pre-processes an array of values.
* @since 1.0.0
* @param values The values to pre-process.
*/
preprocess(values) {
const inspectOptions = { colors: colorette.isColorSupported, depth: this.depth };
return values.map((value) => typeof value === "string" ? value : util.inspect(value, inspectOptions)).join(this.join);
}
get levels() {
return Reflect.get(framework.Logger, "levels");
}
/**
* Gets whether or not colorette is enabled.
* @since 1.0.0
*/
static get stylize() {
return colorette.isColorSupported;
}
static createFormatMap(options = {}, defaults = options.none ?? {}) {
return /* @__PURE__ */ new Map([
[framework.LogLevel.Trace, _Logger.ensureDefaultLevel(options.trace, defaults, colorette.gray, "TRACE")],
[framework.LogLevel.Debug, _Logger.ensureDefaultLevel(options.debug, defaults, colorette.magenta, "DEBUG")],
[framework.LogLevel.Info, _Logger.ensureDefaultLevel(options.info, defaults, colorette.cyan, "INFO")],
[framework.LogLevel.Warn, _Logger.ensureDefaultLevel(options.warn, defaults, colorette.yellow, "WARN")],
[framework.LogLevel.Error, _Logger.ensureDefaultLevel(options.error, defaults, colorette.red, "ERROR")],
[framework.LogLevel.Fatal, _Logger.ensureDefaultLevel(options.fatal, defaults, colorette.bgRed, "FATAL")],
[framework.LogLevel.None, _Logger.ensureDefaultLevel(options.none, defaults, colorette.white, "")]
]);
}
static ensureDefaultLevel(options, defaults, color, name) {
if (options) return new LoggerLevel_cjs.LoggerLevel(options);
return new LoggerLevel_cjs.LoggerLevel({
...defaults,
timestamp: defaults.timestamp === null ? null : { ...defaults.timestamp ?? {}, color },
infix: name.length ? `${color(name.padEnd(5, " "))} - ` : ""
});
}
};
__name(_Logger, "Logger");
var Logger = _Logger;
exports.Logger = Logger;
//# sourceMappingURL=Logger.cjs.map
//# sourceMappingURL=Logger.cjs.map