Ledger is an event based NodeJS module used for logging events to stdout, files or MongoDB.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

81 lines
1.9 KiB

var ee2 = require('eventemitter2').EventEmitter2;
var util = require('util');
var fs = require('fs');
var colors = require('colors');
var transactions = require('./transactions');
var ledger = function(options, trans){
options = (options)?options:{};
this.transactions = (typeof trans === 'object')?trans: [];
this.separator = (typeof options.separator=='string')?options.separator:' - ';
this.timeFormatter = function(date){
return date.toString();
};
if( typeof options.timeFormatter == 'function' ){
this.timeFormatter = options.timeFormatter;
}
this.now = function(){
return this.timeFormatter( new Date() ).toString();
}
ee2.call(this, {
wildcard: true,
delimiter: '::'
});
};
util.inherits(ledger,ee2);
ledger.prototype._log = function(parts){
var msg = parts.join(this.separator);
for( var i in this.transactions ){
this.transactions[i].log( msg, parts );
}
};
module.exports.createLogger = function( options, trans ){
var logger = new ledger(options, trans);
logger.log = function(msg){
var parts = [logger.now(), 'LOG', String(msg)]
logger._log(parts);
logger.emit('log::log', String(msg), parts);
};
logger.info = function(msg){
var parts = [logger.now(), 'INFO', String(msg)]
logger._log(parts);
logger.emit('log::info', String(msg), parts);
};
logger.warn = function(msg){
var parts = [logger.now(), 'WARN', String(msg)]
logger._log(parts);
logger.emit('log::warn', String(msg), parts);
};
logger.error = function(msg){
var parts = [logger.now(), 'ERROR', String(msg)]
logger._log(parts);
logger.emit('log::error', String(msg), parts);
};
if( options.override !== false ){
console.log = logger.log;
console.info = logger.info;
console.warn = logger.warn;
console.error = logger.error;
}
return logger;
};
module.exports.transactions = transactions;