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() { }); }); } }); } }); };
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
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(){
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 ; };
/**! * 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;
"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');
module.exports = function createLogger(logDir, name) { const logger = tracer.colorConsole(); return logger; };
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'] // })
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); };
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 ); }
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) } } } })
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) } } })
'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]; } });