9a49d35023
Adds multiple variable support and the ability to set statement level logging semantics. This breaks that logger API, cleaning up the manner in which enums are set, but the other behaviors are backwards compatible. Fixes #956
34 lines
890 B
JavaScript
34 lines
890 B
JavaScript
let logger = {
|
|
methodMap: ['debug', 'info', 'warn', 'error'],
|
|
level: 'info',
|
|
|
|
// Maps a given level value to the `methodMap` indexes above.
|
|
lookupLevel: function(level) {
|
|
if (typeof level === 'string') {
|
|
let levelMap = logger.methodMap.indexOf(level.toLowerCase());
|
|
if (levelMap >= 0) {
|
|
level = levelMap;
|
|
} else {
|
|
level = parseInt(level, 10);
|
|
}
|
|
}
|
|
|
|
return level;
|
|
},
|
|
|
|
// Can be overridden in the host environment
|
|
log: function(level, ...message) {
|
|
level = logger.lookupLevel(level);
|
|
|
|
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
|
|
let method = logger.methodMap[level];
|
|
if (!console[method]) { // eslint-disable-line no-console
|
|
method = 'log';
|
|
}
|
|
console[method](...message); // eslint-disable-line no-console
|
|
}
|
|
}
|
|
};
|
|
|
|
export default logger;
|