npm-package-resolver
Version:
An API for Resolving NPM package dependencies
149 lines (102 loc) • 3.09 kB
JavaScript
/**
* 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);
}