/*! * socket.io-node * Copyright(c) 2011 LearnBoost * MIT Licensed */ /** * Module dependencies. */ var util = require('./util') , toArray = util.toArray; /** * Log levels. */ var levels = [ 'error' , 'warn' , 'info' , 'debug' ]; /** * Colors for log levels. */ var colors = [ 31 , 33 , 36 , 90 ]; /** * Pads the nice output to the longest log level. */ function pad (str) { var max = 0; for (var i = 0, l = levels.length; i < l; i++) max = Math.max(max, levels[i].length); if (str.length < max) return str + new Array(max - str.length + 1).join(' '); return str; }; /** * Logger (console). * * @api public */ var Logger = module.exports = function (opts) { opts = opts || {} this.colors = false !== opts.colors; this.level = 3; this.enabled = true; }; /** * Log method. * * @api public */ Logger.prototype.log = function (type) { var index = levels.indexOf(type); if (index > this.level || !this.enabled) return this; console.log.apply( console , [this.colors ? ' \033[' + colors[index] + 'm' + pad(type) + ' -\033[39m' : type + ':' ].concat(toArray(arguments).slice(1)) ); return this; }; /** * Generate methods. */ levels.forEach(function (name) { Logger.prototype[name] = function () { this.log.apply(this, [name].concat(toArray(arguments))); }; });