2016-03-15 55 views
0

我正在使用像winston,mongodb等库的node.js。我将nodejs分割为多个文件以便于维护,如index.js,user.js,posting.js,database.js,logging.js等。node.js库的多重初始化很好?

logging.js是象下面这样:

var config = require('./config'),  
path = require ('path'), 
winston = require('winston'), 
winstonRotate = require('winston-daily-rotate-file'); 

winston.level = config.appSetting.winstonLogLevel; 

var logger = new (winston.Logger)({ 
    transports: [ 
    new (winston.transports.Console)(), 
    new (winstonRotate)({ 
     name: 'info-file', 
     datePattern: '.yyyyMMdd', 
     filename: path.join(__dirname, "logs", "info.log"),  
     level: 'info' 
    }), 
    new (winstonRotate)({ 
     name: 'error-file', 
     datePattern: '.yyyyMMdd', 
     filename: path.join(__dirname, "logs", "error.log"),  
     level: 'error' 
    }), 
    new (winstonRotate)({ 
     name: 'debug-file', 
     datePattern: '.yyyyMMdd', 
     filename: path.join(__dirname, "logs", "debug.log"),  
     level: 'debug' 
    }), 
    new (winstonRotate)({ 
     name: 'warn-file', 
     datePattern: '.yyyyMMdd', 
     filename: path.join(__dirname, "logs", "warn.log"),  
     level: 'warn' 
    }) 
    ] 
}); 

module.exports = logger; 

database.js

var mongoClient = require('mongodb').MongoClient,  
mongodbObjectID = require('mongodb').ObjectID, 
logger = require('./logging'), database; 

// Connect to the db 
mongoClient.connect(config.appSetting.dbConnectionString, function(err, db) { 

    if(!err) { 

    database = db; 

    logger.info("Connected to DB"); 

    } else { 

    logger.error("Failed to connect to moolahome mongodb : " + err); 

    console.dir(err); 

    process.exit(1);  
    } 

}); 

module.exports = database; 

我添加logging.js到index.js,user.js的和posting.js和database.js为日志记录,这导致记录器的4次初始化。 我添加database.js到index.js,user.js和posting.js nd这导致数据库的3次初始化。

这是好的或需要使记录器和数据库单身?

回答

0

第一次加载后,所有库(或模块)都缓存在require对象中。
Check this out
因此,运行时可以确定它是您自己决定应用程序结构:)