summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/logger.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2015-08-03 11:36:36 -0500
committerkpdecker <kpdecker@gmail.com>2015-08-03 11:37:49 -0500
commit9a49d350231edbe82c9982df9a99f39596fb96b7 (patch)
treec4c035fb66e73eb0dfe7e77b8b8f3ddc16068f83 /lib/handlebars/logger.js
parentb664997dc37ab46eff678b802bb57c84160f46ad (diff)
downloadhandlebars.js-9a49d350231edbe82c9982df9a99f39596fb96b7.zip
handlebars.js-9a49d350231edbe82c9982df9a99f39596fb96b7.tar.gz
handlebars.js-9a49d350231edbe82c9982df9a99f39596fb96b7.tar.bz2
Improve logging API
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
Diffstat (limited to 'lib/handlebars/logger.js')
-rw-r--r--lib/handlebars/logger.js33
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
}
}
};