@runejs/common
Version:
Common logging, networking, compression, and other miscellaneous functionality for RuneJS.
137 lines • 4.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logger = exports.RuneLogger = exports.LOGGER_DEFAULT_TIME_FN = void 0;
const tslib_1 = require("tslib");
const pino_1 = (0, tslib_1.__importDefault)(require("pino"));
exports.LOGGER_DEFAULT_TIME_FN = pino_1.default.stdTimeFunctions.isoTime;
/**
* The main RuneJS wrapper class for the Pino logger.
* @see https://www.npmjs.com/package/pino
* @see https://www.npmjs.com/package/sonic-boom
*/
class RuneLogger {
constructor(options) {
/**
* The logger's active date/time format function for log messages.
* IE timestamp: () => `,"time":"${new Date(Date.now()).toISOString()}"`
*/
this.loggerTimeFn = exports.LOGGER_DEFAULT_TIME_FN;
this._options = {
timestamp: this.loggerTimeFn,
prettyPrint: true
};
if (options) {
this._options = options;
}
this.pinoInit();
}
/**
* Log at `'log'` level the given messages.
* @param messages The log messages to write.
*/
log(...messages) {
this.logMessages('log', ...messages);
}
/**
* Log at `'info'` level the given messages.
* @param messages The log messages to write.
*/
info(...messages) {
this.logMessages('info', ...messages);
}
/**
* Log at `'debug'` level the given messages.
* @param messages The log messages to write.
*/
debug(...messages) {
this.logMessages('debug', ...messages);
}
/**
* Log at `'warn'` level the given messages.
* @param messages The log messages to write.
*/
warn(...messages) {
this.logMessages('warn', ...messages);
}
/**
* Log at `'error'` level the given messages.
* @param messages The log messages to write.
*/
error(...messages) {
this.logMessages('error', ...messages);
}
/**
* Log at `'trace'` level the given messages.
* @param messages The log messages to write.
*/
trace(...messages) {
this.logMessages('trace', ...messages);
}
/**
* Log at `'fatal'` level the given messages.
* @param messages The log messages to write.
*/
fatal(...messages) {
this.logMessages('fatal', ...messages);
}
/**
* Sets the logger's output log file destination path.
* @param dest The path for the log file to be written to.
* @return A `SonicBoom` object that controls the log output stream.
* @see https://www.npmjs.com/package/sonic-boom
*/
destination(dest) {
this._boom = pino_1.default.destination(dest);
return this._boom;
}
/**
* Sets the logger options to the given options object.
* @param options The options to supply to the `pino` logger instance.
*/
setOptions(options) {
if (!options.timestamp) {
options.timestamp = exports.LOGGER_DEFAULT_TIME_FN;
}
this.loggerTimeFn = options.timestamp;
this._options = options;
this.pinoInit();
}
/**
* Sets the logger prettyPrint value.
* @param prettyPrint The value to set prettyPrint to.
*/
setPrettyPrint(prettyPrint) {
this.setOptions({
timestamp: this.loggerTimeFn,
prettyPrint
});
}
/**
* Sets the logger's date/time function to the given value.
* @param format The function that will return the partial JSON value of the current time for Pino to ingest.
* IE timestamp: () => `,"time":"${new Date(Date.now()).toISOString()}"`
*/
setTimeFormat(format) {
this.setOptions({
timestamp: format
});
}
logMessages(consoleType, ...args) {
args.forEach(arg => this.pinoLogger[consoleType](arg));
}
pinoInit() {
this.pinoLogger = (0, pino_1.default)(this._options);
}
get boom() {
return this._boom;
}
get options() {
return this._options;
}
}
exports.RuneLogger = RuneLogger;
/**
* The main logger singleton instance.
*/
exports.logger = new RuneLogger();
//# sourceMappingURL=logger.js.map