我正在構建一個可以由位於不同文件中的多個調用者調用的日誌記錄模塊。將函數導出到不同文件中的多個調用者
我的目標是在程序開始時初始化日誌文件,讓調用者只調用一個函數,記錄到之前初始化的文件,而無需再次進行整個初始化。
我不太明白模塊出口的概念,因此我希望你能幫上忙。
實際記錄發生在方法寫入上。在主要的app.js文件中,我可以啓動並記錄日誌。
但是,在另一個文件上,我對如何在不通過再次創建日誌文件的情況下只登錄到文件存在心理障礙。
var fs = require('fs');
var fd = {},
log = {},
debug = false;
var tnlog = function(env, file, hostname, procname, pid) {
if (env == 'development')
debug = true;
fd = fs.createWriteStream(file, { flags: 'a', encoding: 'utf8', mode: 0644 });
log = { hostname: hostname, procname: procname, pid: pid };
};
tnlog.prototype.write = function(level, str) {
if (debug)
console.log(str);
else {
log.timestamp = Date.now();
log.level = level;
log.str = str;
fd.write(JSON.stringify(log) + '\n');
}
};
exports.tnlog = tnlog;
這是我如何初始化和登錄的主文件:
var logfile = '/var/log/node/www/app.log';
var tnlog = require('./lib/tnlog').tnlog,
log = new tnlog(app.get('env'), logfile, os.hostname(), appname, process.pid);
如果你可以建議做事情的一個更好的辦法,我一定會對此表示讚賞。