diff options
Diffstat (limited to 'lib/handlebars/logger.js')
-rw-r--r-- | lib/handlebars/logger.js | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/lib/handlebars/logger.js b/lib/handlebars/logger.js index 823d715..1d583dd 100644 --- a/lib/handlebars/logger.js +++ b/lib/handlebars/logger.js @@ -1,18 +1,31 @@ let logger = { - methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' }, + methodMap: ['debug', 'info', 'warn', 'error'], + level: 'info', - // State enum - DEBUG: 0, - INFO: 1, - WARN: 2, - ERROR: 3, - level: 1, + // 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) { - if (typeof console !== 'undefined' && logger.level <= level) { + log: function(level, ...message) { + level = logger.lookupLevel(level); + + if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { let method = logger.methodMap[level]; - (console[method] || console.log).call(console, message); // eslint-disable-line no-console + if (!console[method]) { // eslint-disable-line no-console + method = 'log'; + } + console[method](...message); // eslint-disable-line no-console } } }; |