loggi
Version:
A memory log util for JavaScript Applications
116 lines (95 loc) • 3.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LOG_METHOD_LEVELS = exports.LOG_METHODS = exports.LOG_LEVELS = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _constants = require('./constants');
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**
* Prints the arguments in the console using the provided method.
*
* @param {string} method
* @param {...any} args
*/
var print = function (method) {
var _console;
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return (_console = console)[method].apply(_console, args);
};
/**
* Determines if the method should print to the console.
*
* @param {string} method
* @param {string} logLevel
* @returns {boolean}
*/
var shouldPrint = function (method, logLevel) {
return _constants.LOG_METHOD_LEVELS[method] >= logLevel;
};
/**
* Logger constructor function
*
* @param {object} userOptions
* @returns {object}
*/
var createLogger = function () {
var userOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var defaults = {
logLevel: _constants.LOG_LEVELS.DEBUG,
maxMemoryLogs: 100
};
var options = _extends({}, defaults, userOptions);
var history = [];
/**
* Saves the log in memory and prints it out,
* depending on the log level.
*
* @param {string} method
* @param {...any} args
*/
var log = function (method) {
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
history.push({
method: method,
args: args,
timestamp: Date.now()
});
history = history.slice(0, options.maxMemoryLogs);
shouldPrint(method, options.logLevel) && print.apply(undefined, [method].concat(args));
};
/**
* Loops through the history array and prints all messages
* from the logger's memory.
*/
var debug = function () {
history.map(function (_ref) {
var method = _ref.method,
args = _ref.args;
return print.apply(undefined, [method].concat(_toConsumableArray(args)));
});
};
var returnObject = {
debug: debug,
getHistory: function getHistory() {
return history;
}
};
_constants.LOG_METHODS.map(function (method) {
return returnObject[method] = function () {
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
return log.apply(undefined, [method].concat(args));
};
});
return returnObject;
};
exports.default = createLogger;
exports.LOG_LEVELS = _constants.LOG_LEVELS;
exports.LOG_METHODS = _constants.LOG_METHODS;
exports.LOG_METHOD_LEVELS = _constants.LOG_METHOD_LEVELS;