[英]Using log (or other object from index.js) in nodejs modules
我最近使用過的想法winston
在記錄的NodeJS。 我開始配置它,並且它開始增長。 我在index.js文件中使用了它,但是它開始變大,然后將該文件分成模塊。 我也想記錄模塊中發生的事情,但是為此,我需要每次都要求並重新配置winston日志,或者將index.js中的winston logger注入模塊中。 我認為最后一種方法更好,但是有更好的方法嗎? 我的想法是:假設loggin是我配置的日志記錄對象,這是我將在每個myModule.js中執行的操作:
var logging;
module.exports.injectLog(loggingObject) {
this.logging = loggingObject;
}
module.exports.someFunctionThatNeedsToBeLogged() {
//do something
logging("doing some log");
}
然后在index.js中,我需要這樣的模塊:
var myModule = require('./myModule.js').injectLog(loggingObject);
這是一個好方法嗎?
有幾種方法可以實現您的要求,我認為這兩種方法比您所描述的要干凈。
您可以為每個需要記錄的模塊提供一個依賴項對象。 您甚至可以將其移至配置模塊以保持index.js
干凈
// index.js
var winston = require('winston');
winston.configure({
// config etc etc
});
var deps = {
logger: winston
}
var someOtherModule = require("./some-other-module")(deps);
// someOtherModule
module.exports = function(deps){
var logger = deps.logger;
// return your module
}
這樣,您就可以在其他依賴項到達時輕松添加它們。
我認為我的首選方法是在記錄器周圍編寫一個光包裝紙,並在需要時進行包裝。
// logger.js
const winston = require('winston');
winston.configure({
// config etc etc
});
module.exports = winston;
// index.js
var logger = require("./logger");
// some-other-module
var logger = require("./logger");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.