UNPKG

npm-package-resolver

Version:

An API for Resolving NPM package dependencies

149 lines (102 loc) 3.09 kB
/** * Created by liam on 28/08/2015. */ var winston = require('winston'); var _config = require('./config.js'); var _version = require('../package.json').version; var logger; var loggingEnabled = true; var moment = require('moment'); var _ = require('underscore'); var config; // current config file according to env production or dev moment().format(); function setProductionLogging(){ console.log('Logger set for PRODUCTION'); // disabled normal logging/ allows warn and err loggingEnabled = false; config = _config.production; logger = new winston.Logger({ transports: [ new (winston.transports.Console)({ json:true }) ] }); logger.on('error',function(e){ logger.error('logger Error:'+e); }); //logger.emitErrs = false; } function setDevLogging(){ console.log('Logger set for DEVELOPMENT'); loggingEnabled = true; config = _config.development; logger = new winston.Logger({ transports: [ new (winston.transports.Console)({ json:true }), new (winston.transports.File)({ filename: config.logsPath+'app.log', maxsize:10048576,maxFiles:10,json:true} ) ] }); logger.on('error',function(e){ logger.error('logger Error:'+e); }); } function loggerInstance(_origin) { var module = _origin this.log = function(){ //arguments[0] = _room()+"-"+arguments[0]; if (!loggingEnabled) { return; } logger.info.apply(this,generalLog.apply(this,arguments)); } this.err = function(){ var metaData = generalLog.apply(this,arguments) logger.error.apply(this,metaData); } this.warn = function() { logger.warn.apply(this,generalLog.apply(this,arguments)); } var generalLog = function() { var args = Array.prototype.slice.call(arguments); //args[0] = _room()+"-"+args[0]; var logObect = { 'type':'resolver-log', 'module':module, '@timestamp':moment().format('YYYY-MM-DDTHH:mm:ss.SSSZ'), }; if (typeof args[args.length-1]=="object"){ _.extend(logObect,args[args.length-1]); args[args.length-1] = logObect; } else { args.push(logObect); } //logger.info.apply(this,args); return args; } } /** * Prepares the log object to be sent into the logging function * @returns {Array} returns an array which should be treated as arguments */ function isProduction(){ return process.env['NODE_ENV']=="production"?true:false; } module.exports = function returnLogger(originStr){ console.log('Creating logger for origin:',originStr); if (!logger){ console.log('Creating Singleton Logger Instance'); if (isProduction()){ setProductionLogging(); } else { setDevLogging(); } } return new loggerInstance(originStr); }