UNPKG

@runejs/common

Version:

Common logging, networking, compression, and other miscellaneous functionality for RuneJS.

137 lines 4.32 kB
"use strict"; 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