postal.js/example/node/node_modules/socket.io/lib/logger.js

100 lines
1.4 KiB
JavaScript

/*!
* socket.io-node
* Copyright(c) 2011 LearnBoost <dev@learnboost.com>
* 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 ) ) );
};
} );