2011-09-10 51 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