UNPKG

@libj/logger

Version:
80 lines 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseLogger = void 0; var sprintf_js_1 = require("sprintf-js"); var LoggerLevel_1 = require("../LoggerLevel"); var isType_1 = require("../common/isType/isType"); var TIMESTAMP_PLACEHOLDER = '%a'; var BaseLogger = /** @class */ (function () { function BaseLogger(options) { if (options === void 0) { options = {}; } this.options = options; } /*** Public ***/ BaseLogger.prototype.setOptions = function (options) { this.options = options; }; BaseLogger.prototype.format = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _a = this.extractFormatArgs(args), level = _a.level, message = _a.message, formatArgs = _a.formatArgs, prefix = []; if (this.options.prefix) { prefix.push((0, sprintf_js_1.sprintf)('[%s]', this.options.prefix)); } if (level) { prefix.push(level); } var finalMessage = prefix.length ? (0, sprintf_js_1.sprintf)('%s: %s', prefix.join(' '), message) : message; if (this.options.timestamp) { if (finalMessage.indexOf(TIMESTAMP_PLACEHOLDER) === -1) { finalMessage = "[%a] ".concat(finalMessage); } var date = typeof this.options.timestamp === 'function' ? this.options.timestamp() : new Date().toISOString(); finalMessage = finalMessage.replace(/%a/g, date); } try { return this.sprintf(finalMessage, formatArgs); } catch (err) { if (this.isSprintfError(err)) { return finalMessage; } throw err; } }; BaseLogger.prototype.sprintf = function (message, args) { return (0, sprintf_js_1.vsprintf)(message, args); }; /*** Private ***/ BaseLogger.prototype.extractFormatArgs = function (args) { var level, message, formatArgs = []; if (args.length === 1) { message = args[0]; } else if (args.length === 2 && (0, isType_1.isEnumVal)(LoggerLevel_1.LoggerLevel, args[0])) { (level = args[0], message = args[1]); } else if (args.length === 2) { (message = args[0], formatArgs = args[1]); } else if (args.length === 3) { (level = args[0], message = args[1], formatArgs = args[2]); } else { throw new Error('Invalid args'); } return { level: level, message: message, formatArgs: formatArgs }; }; BaseLogger.prototype.isSprintfError = function (err) { return err.message.includes('[sprintf]'); }; return BaseLogger; }()); exports.BaseLogger = BaseLogger; //# sourceMappingURL=BaseLogger.js.map