mirror of
https://github.com/Hopiu/postal.js.git
synced 2026-03-17 14:40:24 +00:00
100 lines
1.4 KiB
JavaScript
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 ) ) );
|
|
};
|
|
} );
|