-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
97 lines (80 loc) · 2.07 KB
/
index.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
95
96
97
'use strict';
function noop() {}
const logLevels = exports.logLevels = {
TRACE: 0,
DEBUG: 1,
INFO: 2,
WARN: 3,
ERROR: 4,
FATAL: 5,
OFF: 6
};
const loggerMethodsMap = {
debug: console.log.bind(console),
info: console.log.bind(console),
success: console.log.bind(console),
warn: console.warn.bind(console),
error: console.error.bind(console),
critical: console.error.bind(console),
alert: console.log.bind(console),
emergency: console.error.bind(console),
notice: console.log.bind(console),
verbose: console.log.bind(console),
fatal: console.error.bind(console)
};
const logLevelMap = {
isTraceEnabled(logLevel) {
return logLevel === logLevels.TRACE;
},
isDebugEnabled(logLevel) {
return logLevel <= logLevels.DEBUG;
},
isInfoEnabled(logLevel) {
return logLevel <= logLevels.INFO;
},
isWarnEnabled(logLevel) {
return logLevel <= logLevels.ERROR;
},
isFatalEnabled(logLevel) {
return logLevel <= logLevel.FATAL;
}
};
let loggerNoopsMap = {};
for (let method in loggerMethodsMap) {
loggerNoopsMap[method] = noop;
}
const logLevelFalse = () => false;
function enabledMethod(logLevel, mapMethod) {
return () => mapMethod(logLevel);
}
function _buildLogLevelMap(logger, logLevel) {
const logLevelExists = typeof logLevel !== 'undefined';
for (let method in logLevelMap) {
if (!logger[method]) {
if (logLevelExists) {
let mapMethod = logLevelMap[method];
logger[method] = enabledMethod(logLevel, mapMethod);
} else {
// Always return false if logLevel was undefined
logger[method] = logLevelFalse;
}
}
}
}
exports.configure = (logger, options) => {
options = options || {};
let logLevel = options.logLevel;
if (logger === true) {
logger = Object.assign({}, loggerMethodsMap);
} else if (logger) {
for (let method in loggerMethodsMap) {
if (!logger[method]) {
logger[method] = loggerMethodsMap[method];
}
}
} else {
logger = Object.assign({}, loggerNoopsMap);
}
_buildLogLevelMap(logger, logLevel);
return logger;
};