diff options
Diffstat (limited to 'lib/utils/logger.js')
-rw-r--r-- | lib/utils/logger.js | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/lib/utils/logger.js b/lib/utils/logger.js deleted file mode 100644 index 6fac92b..0000000 --- a/lib/utils/logger.js +++ /dev/null @@ -1,172 +0,0 @@ -var is = require('is'); -var util = require('util'); -var color = require('bash-color'); -var Immutable = require('immutable'); - -var LEVELS = Immutable.Map({ - DEBUG: 0, - INFO: 1, - WARN: 2, - ERROR: 3, - DISABLED: 10 -}); - -var COLORS = Immutable.Map({ - DEBUG: color.purple, - INFO: color.cyan, - WARN: color.yellow, - ERROR: color.red -}); - -function Logger(write, logLevel) { - if (!(this instanceof Logger)) return new Logger(write, logLevel); - - this._write = write || function(msg) { - if(process.stdout) { - process.stdout.write(msg); - } - }; - this.lastChar = '\n'; - - this.setLevel(logLevel || 'info'); - - // Create easy-to-use method like "logger.debug.ln('....')" - LEVELS.forEach(function(level, levelKey) { - if (levelKey === 'DISABLED') { - return; - } - levelKey = levelKey.toLowerCase(); - - this[levelKey] = this.log.bind(this, level); - this[levelKey].ln = this.logLn.bind(this, level); - this[levelKey].ok = this.ok.bind(this, level); - this[levelKey].fail = this.fail.bind(this, level); - this[levelKey].promise = this.promise.bind(this, level); - }, this); -} - -/** - Change minimum level - - @param {String} logLevel -*/ -Logger.prototype.setLevel = function(logLevel) { - if (is.string(logLevel)) { - logLevel = logLevel.toUpperCase(); - logLevel = LEVELS.get(logLevel); - } - - this.logLevel = logLevel; -}; - -/** - Return minimum logging level - - @return {Number} -*/ -Logger.prototype.getLevel = function(logLevel) { - return this.logLevel; -}; - -/** - Print a simple string - - @param {String} -*/ -Logger.prototype.write = function(msg) { - msg = msg.toString(); - this.lastChar = msg[msg.length - 1]; - return this._write(msg); -}; - -/** - Format a string using the first argument as a printf-like format. -*/ -Logger.prototype.format = function() { - return util.format.apply(util, arguments); -}; - -/** - Print a line - - @param {String} -*/ -Logger.prototype.writeLn = function(msg) { - return this.write((msg || '')+'\n'); -}; - -/** - Log/Print a message if level is allowed - - @param {Number} level -*/ -Logger.prototype.log = function(level) { - if (level < this.logLevel) return; - - var levelKey = LEVELS.findKey(function(v) { - return v === level; - }); - var args = Array.prototype.slice.apply(arguments, [1]); - var msg = this.format.apply(this, args); - - if (this.lastChar == '\n') { - msg = COLORS.get(levelKey)(levelKey.toLowerCase()+':')+' '+msg; - } - - return this.write(msg); -}; - -/** - Log/Print a line if level is allowed -*/ -Logger.prototype.logLn = function() { - if (this.lastChar != '\n') this.write('\n'); - - var args = Array.prototype.slice.apply(arguments); - args.push('\n'); - return this.log.apply(this, args); -}; - -/** - Log a confirmation [OK] -*/ -Logger.prototype.ok = function(level) { - var args = Array.prototype.slice.apply(arguments, [1]); - var msg = this.format.apply(this, args); - if (arguments.length > 1) { - this.logLn(level, color.green('>> ') + msg.trim().replace(/\n/g, color.green('\n>> '))); - } else { - this.log(level, color.green('OK'), '\n'); - } -}; - -/** - Log a "FAIL" -*/ -Logger.prototype.fail = function(level) { - return this.log(level, color.red('ERROR') + '\n'); -}; - -/** - Log state of a promise - - @param {Number} level - @param {Promise} - @return {Promise} -*/ -Logger.prototype.promise = function(level, p) { - var that = this; - - return p. - then(function(st) { - that.ok(level); - return st; - }, function(err) { - that.fail(level); - throw err; - }); -}; - -Logger.LEVELS = LEVELS; - -module.exports = Logger; |