Logger.js
2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
'use strict';
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var LEVELS = ['info', 'warn', 'error', 'silent'];
var LEVEL_TO_CONSOLE_METHOD = new Map([['info', 'log'], ['warn', 'log']]);
var Logger = function () {
function Logger() {
var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'info';
_classCallCheck(this, Logger);
this.activeLevels = new Set();
this.setLogLevel(level);
}
Logger.prototype.setLogLevel = function setLogLevel(level) {
var levelIndex = LEVELS.indexOf(level);
if (levelIndex === -1) throw new Error('Invalid log level "' + level + '". Use one of these: ' + LEVELS.join(', '));
this.activeLevels.clear();
for (var _iterator = LEVELS.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var _ref2 = _ref,
i = _ref2[0],
_level = _ref2[1];
if (i >= levelIndex) this.activeLevels.add(_level);
}
};
Logger.prototype._log = function _log(level) {
var _console;
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
(_console = console)[LEVEL_TO_CONSOLE_METHOD.get(level) || level].apply(_console, args);
};
return Logger;
}();
Logger.levels = LEVELS;
;
LEVELS.forEach(function (level) {
if (level === 'silent') return;
Logger.prototype[level] = function () {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
if (this.activeLevels.has(level)) this._log.apply(this, [level].concat(args));
};
});
module.exports = Logger;