@runejs/core
Version:
Core logging, networking, and buffer functionality for RuneJS applications.
84 lines • 2.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setLoggerTimeFn = exports.setLoggerPrettyPrint = exports.setLoggerOptions = exports.logger = exports.RuneLogger = exports.LOGGER_DEFAULT_TIME_FN = void 0;
const tslib_1 = require("tslib");
const pino_1 = tslib_1.__importDefault(require("pino"));
exports.LOGGER_DEFAULT_TIME_FN = pino_1.default.stdTimeFunctions.isoTime;
/**
* The main RuneJS wrapper class for the Pino logger.
*/
class RuneLogger {
constructor() {
/**
* 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;
/**
* The main pino logger instance for the wrapper object.
*/
this.pinoLogger = pino_1.default({
timestamp: this.loggerTimeFn,
prettyPrint: true
});
}
info(...messages) {
this.log('info', ...messages);
}
debug(...messages) {
this.log('debug', ...messages);
}
warn(...messages) {
this.log('warn', ...messages);
}
error(...messages) {
this.log('error', ...messages);
}
trace(...messages) {
this.log('trace', ...messages);
}
fatal(...messages) {
this.log('fatal', ...messages);
}
log(consoleType, ...args) {
args.forEach(arg => this.pinoLogger[consoleType](arg));
}
}
exports.RuneLogger = RuneLogger;
/**
* The main logger singleton instance.
*/
exports.logger = new RuneLogger();
/**
* Sets the logger options to the given options object.
* @param options
*/
const setLoggerOptions = (options) => {
if (!options.timestamp) {
options.timestamp = exports.LOGGER_DEFAULT_TIME_FN;
}
exports.logger.loggerTimeFn = options.timestamp;
exports.logger.pinoLogger = pino_1.default(options);
};
exports.setLoggerOptions = setLoggerOptions;
/**
* Sets the logger prettyPrint value.
* @param prettyPrint The value to set prettyPrint to.
*/
const setLoggerPrettyPrint = (prettyPrint) => {
exports.logger.pinoLogger = pino_1.default({
timestamp: exports.logger.loggerTimeFn,
prettyPrint
});
};
exports.setLoggerPrettyPrint = setLoggerPrettyPrint;
/**
* 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()}"`
*/
const setLoggerTimeFn = (format) => {
exports.logger.loggerTimeFn = format;
};
exports.setLoggerTimeFn = setLoggerTimeFn;
//# sourceMappingURL=logger.js.map