-
Notifications
You must be signed in to change notification settings - Fork 0
/
consoleLogger.js
66 lines (61 loc) · 1.58 KB
/
consoleLogger.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
/**
* light log system, wrapping console.log methods:
* - configurable log level (trace|debug|info|warn|error)
* - 5 levels
*
* typical use:
* webpack.config.js:
* resolve: {
* alias: {
* logger$: path.resolve(__dirname, 'tools/consoleLogger.js'),
* }
* }
*
* anywhere.js:
* import $log from 'logger'
* // ...
* $log.info('my message')
*
* or, as Vue property:
* // main.js
* import logger from 'logger'
* Vue.prototype.$log = logger
* // ...
* new Vue({
* created () {
* // in any method of instanciated Vue:
* this.$log.info('my message')
* }
* })
*/
import $config from 'config'
const logLevelConf = $config.logLevel;
const LOG_LEVELS = ['trace', 'debug', 'info', 'warn', 'error']
const logLevel = (LOG_LEVELS.includes(logLevelConf)) ? logLevelConf : 'error';
function _log(level, ...msg) {
/* eslint-disable no-console */
if (LOG_LEVELS.indexOf(level) >= LOG_LEVELS.indexOf(logLevel)) {
switch (level) {
case 'error':
console.error(...msg);
break;
case 'warn':
console.warn(...msg);
break;
case 'info':
console.info(...msg);
break;
default:
console.log(...msg);
break;
}
}
/* eslint-enable no-console */
}
export default {
trace: (...msg) => _log('trace', ...msg),
debug: (...msg) => _log('debug', ...msg),
info: (...msg) => _log('info', ...msg),
warn: (...msg) => _log('warn', ...msg),
error: (...msg) => _log('error', ...msg),
}