Exemple #1
0
exports.makeLogger = function(logfile) {
  if(!logfile) {
    return tracer.colorConsole({level:'debug'});
  }

  return tracer.console({
    level : 'info',
    format : [
      "{{timestamp}} [{{title}}] [{{file}}:{{line}}:{{method}}] {{message}}",
      {error : "{{timestamp}} [{{title}}] [{{file}}:{{line}}:{{method}}] {{message}}"}
    ],
    dateformat : "yyyy-mm-dd HH:MM:ss,L",
    transport : function(data){
      //TODO: Make this not look idiotic, do try catch
      //Open File
      fs.open(logfile, 'a', '0644', function(e, id) {
        if(e) {
          //Dir doesn't exist
          if(e.code === 'ENOENT') {
            fs.mkdir(path.dirname(logfile), '0755', function(err) {
              //Can't make dir exit
              if(err) {
                throw new Error(err);
              }
              fs.open(logfile, 'a', '0644', function(error, id) {
                if(error) {
                  throw new Error(error);
                }
                fs.write(id, data.output+"\n", null, 'utf8', function() {
                  fs.close(id, function() { });
                });
              });
            });
          } else {
            //Not ENOENT
            throw new Error(e);
          }
        }
        else {
          //No Errors
          fs.write(id, data.output+"\n", null, 'utf8', function() {
            fs.close(id, function() { });
          });
        }
      });
    }
  });
};
Exemple #2
0
var tracer = require('tracer')
var path = require('path')

var consoleLogger = tracer.colorConsole({
  format : "{{message}}",
});

var fileLogger = tracer.dailyfile({
  root: path.join(__dirname, '../logs'),
  logPathFormat: '{{root}}/{{date}}.log',
  format : "{{timestamp}} <{{title}}> {{message}} (in {{file}}:{{line}})",
  transport: function (data) {
    consoleLogger[data.title](data.output)
  },
  maxLogFiles: 10
});

module.exports = fileLogger
Exemple #3
0
var fs = require('fs');
var mkdirp = require('mkdirp');
var path = require('path');
var commander = require('commander');
var util = require('util');
var exec = require('child_process');
var tracer = require('tracer');
var UTILS_ROOT = path.resolve('../../');//Utils
var APP_ROOT = path.resolve('../../../../');//Control-Freak
var eol = require('os').EOL;

var old = console;
var console = console;
if(tracer){
    console = tracer.colorConsole({
        format : "{{title}}: {{message}}",
        dateformat : "HH:MM:ss.L"
    });
}

var os = require('os');
var OS = "linux";
if(os.platform() ==='win32'){
    OS = 'windows';
}else if(os.platform() ==='darwin'){
    OS = 'osx';
}else if(os.arch() === 'arm'){
    OS = 'arm';
}

if(!Array.prototype.remove){
    Array.prototype.remove= function(){
Exemple #4
0
module.exports = exports = prefabLOG = function prefabLOG_module(opts){
	var prefab = opts.prefab||require('prefab')();
	var cfg = prefab.merge(opts, {
		methods: ['log','trace','debug','data','info','warn','error','fatal'],
		replaceConsole: true
    });
	
	debug('booting with cfg: %j', cfg);
	
	var log = tracer.colorConsole({
    	methods : cfg.methods,
    	dateformat : "HH:MM:ss",
    	preprocess :  function(data){
    		var msg = util.format.apply(this, data.args);
    		debug('\n\npreprocess data: %j', data);
//    		console.log("data.title", data.title);
//    		console.log("data.message", data.message);
			
    		if(data.title==="log"&&msg.substring(0,1)==="<"){
    			var lastGt = msg.indexOf("> ");
    			if(lastGt!=-1){
//    				console.log("lastGt!=-1 and value:",lastGt);
    				var title = msg.substring(1,lastGt).toLowerCase();
    				var titleIndex = _.indexOf(cfg.methods, title);
//    				console.log("title",title,"titleIndex",titleIndex);
    				if(titleIndex!=-1){
    					var message = msg.substring(lastGt+1);
    					data.title = title;
    					data.level = titleIndex;
//    					data.message = message;
    				}
    			}
    		}
    		
            if(data.title==='error'){
                var callstack = '',len=data.stack.length;
                for(var i=0; i<len; i+=1){
                    callstack += '\n'+data.stack[i];
                }
                data.stacklist = callstack;
            }
            
            
            data.title = data.title.toUpperCase();
//            var filterObj = {
//// log : colors.white,
// debug : colors.cyan,
// data : [colors.blue, colors.bold],
//    			fatal : colors.red
//// fatal : [ colors.red, colors.italic, colors.inverse]
//    		};
        },
//        filters : {
//			log : colors.white,
//			trace : colors.magenta,
//			debug : colors.cyan,
//			data : [colors.blue, colors.bold],
//			info : colors.green,
//			warn : colors.yellow,
//			error : [ colors.red, colors.bold],
//			fatal : [ colors.red, colors.italic, colors.inverse]
//		}
    });
	
	
	
    function testLog(logger){
    	var skip=(logger==console);
    	if(logger)log=logger;
    	log.log('hello');
    	log.trace('hello', 'world');
    	
    	if(skip)log.log('<DEBUG> hello %s', 'world', 123);
    	else log.debug('hello %s', 'world', 123);
    	
    	if(skip)log.log('<DATA> hello %s', 'world', 123);
    	else log.data('hello %s', 'world', 123);

    	log.info('hello %s %d', 'world', 123, {foo : 'bar'});
    	log.warn('hello %s %d %j', 'world', 123, {foo : 'bar'});
    	log.error('hello %s %d %j', 'world', 123, {foo : 'bar'}, [ 1, 2, 3, 4 ], Object);
    	
    	if(skip)log.log('<FATAL> hello %s %d %j', 'world', 123, {foo : 'bar'}, [ 1, 2, 3, 4 ], Object);
    	else log.fatal('hello %s %d %j', 'world', 123, {foo : 'bar'}, [ 1, 2, 3, 4 ], Object);
    	
    	prefab.log("\n");
    }
    function replaceConsole(){
    	debug("replacing default console");
    	console.log = function() {
//    		process.stdout.write('prefab overwritten console log-> '.red.bold
//    				+util.format.apply(this,arguments)+"\n");
//			log.log.apply(this, arguments);
			log.log(arguments);
		};
//		console.trace = function() {
//			log.trace.apply(this, arguments);
//		};
//		console.info = function() {
//			log.info.apply(this, arguments);
//		};
//		console.warn = function() {
//			log.warn.apply(this, arguments);
//		};
//		console.error = function() {
//			log.error.apply(this, arguments);
//		};
    }
    cfg.replaceConsole&&replaceConsole();
	
    cfg.exp.testLog = testLog;
    
    cfg.exp = prefab.merge(cfg.exp, log);
    
    prefab.log = cfg.exp;
    
	return ;
};
Exemple #5
0
/**!
 * crm.appedu.org - middleware/logger.js
 *
 * Copyright(c) crm.appedu.org and other contributors.
 * MIT Licensed
 *
 * Authors:
 *  samhwang1990 <*****@*****.**> (http://SamHwang1990.github.com)
 */

"use strict";

/*
* Module Dependencies
* */

var tracer = require('tracer');
var config = require('../config');
var debug = config.debug;

var logger;

if(!debug){
	logger = tracer.dailyfile({root:'./.tmp/log'});
}else {
	logger = tracer.colorConsole();
}

module.exports = logger;
Exemple #6
0
"use strict";
var colors = require('colors'); //~1.0.3
var tracer = require('tracer');

var log = tracer.colorConsole({
  level: 'trace',
  format : [
    "{{timestamp}} |-{{title}} {{message}}"
  ],
  filters : [
    function(str){return str.blue; }, //default filter
  ],
  methods: [ 'trace', 'debug', 'info', 'warn', 'error', 'stack' ]
});

log.info('info');
log.trace('trace');
log.warn('warn');
log.error('error');
log.stack('stack');
Exemple #7
0
module.exports = function createLogger(logDir, name) {
  const logger = tracer.colorConsole();

  return logger;
};
Exemple #8
0
import config from 'config';
import tracer from 'tracer';

export default tracer.colorConsole({ level: config.logLevel });
const appDir = path.dirname(require.main.filename)

const fileLogger = loggerLib.dailyfile({
  format: '[{{timestamp}}]: <{{title}}> {{message}}',
  dateformat: 'dd-mm-yy HH:MM',
  root: path.join(appDir, 'Logs')
  // maxLogFiles: 10
})

const consoleLogger = loggerLib.colorConsole({
  format: '[{{timestamp}}]: <{{title}}> {{message}}',
  dateformat: 'dd-mm-yy HH:MM',
  methods: ['event', 'trace', 'debug', 'info', 'warn', 'error'],
  filters: {
    //log : colors.black,
    event: colors.green,
    trace: colors.magenta,
    debug: colors.white,
    info: colors.blue,
    warn: colors.yellow,
    error: [colors.red, colors.bold]
  }
})

// const fs = require('fs')
// colors.setTheme({
//   info: ['blue'],
//   warn: ['yellow'],
//   error: ['red'],
//   debug: ['white'],
//   event: ['green']
// })
Exemple #10
0
module.exports = exports = prefabLOG = function prefabLOG_module(opts){
	var cfg = merge(opts, {
        exp: {},
        overrideConsole: true,
        global: true,
		methods: ['log','trace','debug','data','info','warn','error','fatal'],
		consoleMethods: ['log','trace','info','warn','error'],
		overrideMethods: ['trace','info','warn','error']
    });
	
    function merge(opts, defaults) {
        return (opts?extend(defaults,opts):defaults);
    }
    
    var log = tracer.colorConsole({
    	methods : cfg.methods,
    	dateformat : "HH:MM:ss",
    	preprocess :  function(data){
            if(data.title==='error'){
                var callstack = '',len=data.stack.length;
                for(var i=0; i<len; i+=1){
                    callstack += '\n'+data.stack[i];
                }
                data.stacklist = callstack;
            }
            data.title = data.title.toUpperCase();
        }
    });
    
    cfg.methods.forEach(function(item) {
    	cfg.exp[item]=log[item];
    });
    
    function testLog(logger){
    	var skip=(logger==console);
    	if(logger)log=logger;
    	log.log('hello');
    	log.trace('hello', 'world');
    	!skip&&log.debug('hello %s', 'world', 123);
    	!skip&&log.data('hello %s', 'world', 123);
    	log.info('hello %s %d', 'world', 123, {foo : 'bar'});
    	log.warn('hello %s %d %j', 'world', 123, {foo : 'bar'});
    	log.error('hello %s %d %j', 'world', 123, {foo : 'bar'}, [ 1, 2, 3, 4 ], Object);
    	!skip&&log.fatal('hello %s %d %j', 'world', 123, {foo : 'bar'}, [ 1, 2, 3, 4 ], Object);
    	console.log("\n");
	}

	    
/*    var originalConsole = {
		log : console.log,
		debug : console.debug,
		info : console.info,
		warn : console.warn,
		error : console.error
	};

	function replaceConsole(logger) {
		function replaceWith(fn) {
			return function() {
				fn.apply(logger, arguments);
			};
		}
		cfg.overrideMethods.forEach(function(item) {
//			if (item != 'log') {
				if (console[item]) {
					console[item] = replaceWith((item == 'debug') ? logger.info
							: logger[item]);
				} else {
					console[item] = logger[item];
				}
//			}else{
//				console.log = logger.log;
//			}
//		});
	}
	
    function restoreConsole() {
		cfg.methods.forEach(function(item) {
			console[item] = originalConsole[item];
		});
	}
    
    if(cfg.overrideConsole)nonConsoleLevelArray = replaceConsole(log);
    */
    cfg.globalConsole&&function mapGlobalConsole(){
		global['console'] = log;
//		global = (function(){ return this || (1,eval)('this') })();
//		console.log("global.console", global.console);
//		global.console = log;
	}
    
    cfg.global&&function mapGlobal(){
		function replaceWith(fn) {
			return function() {
				fn.apply(log, arguments);
			};
		}
		global = (function(){ return this || (1,eval)('this') })();
		
		cfg.methods.forEach(function(item) {
			global[item]=replaceWith(log[item]);
		});
	}
    
    cfg.exp.testLog = testLog;
    
	return console=merge(cfg.exp, log);
};
Exemple #11
0
hotplate.require = function( m ){ return require( m ); }
hotplate.cachable = async.memoize;
hotplate.hotEvents = new EventEmitterCollector();
hotplate.config = new DeepObject();

// Sane hotplate-wide defaults
// You can (and should) over-ride them in your server.js file
hotplate.config.set( 'hotplate.moduleFilesPrefix', '/hotplate' ); // hotDojoAdd uses it as base URL
hotplate.config.set( 'hotplate.routeUrlsPrefix', '/pages' ); // hotCoreAuth uses it as base URL

// Db settings
hotplate.config.set( 'hotplate.db', null );
hotplate.config.set( 'hotplate.DbLayerMixin', function(){ } );
hotplate.config.set( 'hotplate.SchemaMixin', function(){ } );

// Logger, stolen from tracer.console()
var colorConsole = tracer.colorConsole({ transport: function( data ){ process.stderr.write( data.output + "\n" ); } } );
hotplate.logger = colorConsole;
hotplate.log = colorConsole.log; // Shorthand
hotplate.error = colorConsole.error; // Shorthand
hotplate.killLogging = function(){
  hotplate.log = hotplate.error = function(){};
  var F = function(){}; hotplate.logger = { warn: F, info: F, debug: F, trace: F };
}

var origEmit = hotplate.hotEvents.emit;
hotplate.hotEvents.emit = function(){
  hotplate.log("Emitted event: " + arguments[0] );
  origEmit.apply( this, arguments );
}
Exemple #12
0
var methods = ['debug', 'info', 'warn', 'error']
var level = 'info'
process.argv.forEach(function(item, idx, list) {
  if (item.match(/^(--debug|-[a-zA-Z]*d[a-zA-Z]*)$/)) {
    level = 'debug'
  }
})

module.exports = tracer.colorConsole({
  depth: null,
  methods: methods,
  level: level,

  format: "{{title}}: {{message}} ({{file}}: {{line}})",

  filters: {
    info: colorful.gray,
    warn: colorful.yellow,
    error: colorful.red
  },

  transport: function(data) {
    var title = data.title;
    if (methods.indexOf(title) >= methods.indexOf(level)) {
      console.log(data.output)
      if (title === 'error') {
        throw new Error(data.message)
      }
    }
  }
})
Exemple #13
0
module.exports = tracer.colorConsole({
    methods: levels,
    level: level,

    format: ['{{title}} {{file}}:{{line}} | {{message}}', {
        error: '{{title}} {{file}}:{{line}} | {{message}}\nCall Stack:\n{{stacklist}}'
    }],

    preprocess: function(data) {
        if (data.title === 'error') {
            data.stacklist = data.stack.join('\n')
        }
    },

    filters: [{
        info: colorful.gray,
        warn: colorful.yellow,
        error: colorful.red
    }],

    transport: function(data) {
        var title = data.title
        if (levels.indexOf(title) >= levels.indexOf(level)) {
            console.log(data.output)
        }
        if (title === 'error') {
            process.exit(1)
        }
    }
})
Exemple #14
0
'use strict';

// ============================================================
// ============================================================
// ============================================================

const tracer = require('tracer');

// ============================================================
// ============================================================
// ============================================================

module.exports = tracer.colorConsole({
    level: process.env.LOG_LEVEL || 'info',
    format : [ '{{timestamp}} [{{title}}] ({{file}}:{{line}}) {{message}}'],
    dateformat : 'HH:MM:ss.L',
    preprocess :  function(data){
        data.title = data.title.toUpperCase();
        data.file = data.file.split('.')[0];
    }
});