2014-10-30 24 views
8

我正在使用多個模塊的節點應用程序。我現在正在嘗試正確設置日誌記錄(應該在開始時這樣做),並且正在使用Bunyan。將Bunyan應用於大型節點應用程序的推薦方法?

它會更好,以具有單一的logger模塊被導出,然後由其它模塊所需的,所建議的在this answer或每個模塊中直接定義一個新的布尼安logger實例並相應地配置了嗎?爲了重用,我想象前者,但我不知道這是否會限制前進。

如果我定義一樣,使用它也將與名稱filter記錄,而它可能會更有意義爲每個模塊登錄到

var bunyan  = require('bunyan'); 
var logger = bunyan.createLogger({ 
    name: "filter", 
    streams: [ 
     { 
     level: 'info', 
     stream: process.stdout 
     }, 
     { 
     level: 'error', 
     path: '../error.log' 
     }, 
     { 
     level: 'debug', 
     path: '../debug.log' 
     } 
    ] 
}); 

module.exports = logger; 

然後所有模塊的單一記錄儀更好地代表自己的名字。

此外,我正確地認爲所有模塊應該記錄錯誤到相同的日誌文件,例如systemErr.log(以允許更好的概述)或者他們是否應該登錄到它們自己的錯誤日誌,例如module1Err.log,module2Err.log?

回答

17

它會更好於具有由其他模塊

導出,然後需要一個單一的記錄器模塊。越簡單越好。這也避免了日誌設置的樣板重複。

另外,我認爲所有的模塊應該記錄錯誤到相同的日誌文件,例如: systemErr.log(以允許更好的概述)或者他們是否應該登錄到它們自己的錯誤日誌,例如module1Err.log,module2Err.log?

整個應用程序的一個文件。因爲bunyan使用ndjson格式,所以在需要時可以很容易地過濾主日誌文件。我建議直接登錄到stdout的簡單性和靈活性,並允許部署環境決定應該去哪裏。這對於您可能不需要或希望在磁盤上存儲日誌文件的開發也很方便。諸如upstartmultilog之類的工具可以正確地將您的標準輸出日誌寫入磁盤併爲您處理日誌輪換。

一個額外的提示。當本地開發我跑我的應用程序是這樣的:自動

node-dev --inspect server.js |\ 
    tee -a log/app.ndjson.log | bunyan -o short 
  • node-dev重新啓動時我改變代碼
  • --inspect使我可以附加到鍍鉻devtools
  • tee副本標準輸出的調試器到磁盤所以如果我想回去,並通過日誌在未來的樣子,我可以,但我不希望看到我的終端全ndjson記錄
  • bunyan -o short給我漂亮打印輸出到我的終端這就是我想要的本地開發
+1

從節點6.3+開始,您可以傳遞'--inspect'標誌來代替'--debug 8011'。節點檢查器被[Chrome DevTools](https:// medium。COM/@ paul_irish /調試節點-JS-Nightlies版與 - 鉻devtools-7c4a1b95ae27) – 2017-08-07 15:03:14

相關問題