@libj/logger
Version:
80 lines • 2.93 kB
JavaScript
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
;