-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloglevel-logger-list.js
94 lines (81 loc) · 3.2 KB
/
loglevel-logger-list.js
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/**
* Plugin for https://github.com/pimterry/loglevel
*
* Created by maynagashev (https://github.com/maynagashev).
*
* Custom plugin for loglevel for handling loggers list.
* Rewrites original method getLogger, adds hook for auto-registering new loggers in public list.
*
* Also helper methods added:
* log.all(level) - set specified level for all custom loggers
* log.set(name, level) - set level for specified logger, also can pass an array of logger names
* log.except(exceptName, level) - set level for all, except specified, also can pass an array of excepted names
* log.loggers() - show list of registered loggers with current level value
* log.getLevels() - get available levels array
*
* New Props:
* log.list - array of registered loggers
*
* Note: all helpers affect only custom loggers in list, and doesn't affect default logger.
*/
(function (log) {
"use strict";
var levels = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];
log.list = []; // Public list of loggers, use log.loggers() to inspect current levels
// Register all new loggers in public list
var original = log.getLogger;
log.getLogger = function (name) {
// Add logger to public list if not in list yet.
if (log.list.indexOf(name) === -1) {
log.list.push(name);
}
return original(name);
};
// Show list of registered loggers with current level value
log.loggers = function () {
log.list.map(function (name) {
var level = levels[log.getLogger(name).getLevel()];
var text = level + ' => ' + name;
(level === 'silent') ? log.warn(text) : log.info(text);
});
return log.list.length;
};
// Set level for all custom loggers at once
log.all = function (level) {
log.list.map(function (name) {
log.getLogger(name).setLevel(level);
verbose(name, level);
})
};
// Set level for specified logger (or array of loggers)
log.set = function (name, level) {
if (name.constructor === Array) {
name.map(function (n) {
log.getLogger(n).setLevel(level);
verbose(n, level);
});
}
else {
log.getLogger(name).setLevel(level);
verbose(name, level);
}
};
// Set level for all loggers except specified name (or array of names)
log.except = function (exceptName, level) {
var exceptArray = (exceptName.constructor === Array) ? exceptName : [];
log.list.map(function (name) {
// if name excepted OR exists in excepted array, then skip
if (name === exceptName || exceptArray.indexOf(name) !== -1) return;
log.getLogger(name).setLevel(level);
verbose(name, level);
})
};
// Return array with available levels
log.getLevels = function() {
return levels;
};
// Scoped method to display changes via default logger
function verbose(name, level) {
log.info('log.getLogger("' + name + '").setLevel("' + level + '");');
}
})(window.log);