2011-09-10 32 views
0

我想记录有关服务器请求的详细信息,每次发生时都将其记录到文件中。如何在NodeJS中将事件记录到文件中?

这样做的最佳方法是什么?

目前正在使用:

fs.open("./log_"+log_date.getMonth()+"-"+log_date.getDate(), "a+", function(err, fd){ 
    if(err) { 
     sys.puts(err); 
    } else { 
     var logLineStr = JSON.stringify(log_line); 
     fs.write(fd, logLineStr,null,null,null, function(err, written, buffer) { 
      fs.close(fd); 
     }); 
    } 
}); 
+0

那么简单的事情:'node index.js >> filename.log'。如果你想分割stdout和stderr,请执行'node index.js 1> filename.log 2> filename.error'或类似的东西。结合使用util.log和util.debug。 – tjameson

回答

0

http://nodejs.org/docs/v0.4.11/api/fs.html#fs.write

注意,它是不安全的在同一个文件中多次使用fs.write无需等待回调。对于这种情况,强烈建议使用fs.createWriteStream。

我打算假设这是处理请求,并且可能同时发生多个打开/写入操作。

你最好写一个模块,在需要时打开一次文件,并维护一个可写入流,以确保你没有任何奇怪的边缘情况/竞争条件。

+0

这就是我想要做的,但没有找到如何使用createWriteStream的例子... – Ben