2016-12-29 54 views
2

我剛剛創建了一個應用程序從快車發生器同時使用`morgan`和`debug`記錄包,它使用了兩個記錄器debugmorgan爲什麼在一個項目

/bin/www.js

const debug = require('debug')('myapp:server'); 
.... 
server.on('listening', onListening); 
function onListening() { 
    const addr = server.address(); 
    const bind = typeof addr === 'string' 
     ? 'pipe ' + addr 
     : 'port ' + addr.port; 
    debug('Listening on ' + bind); 
--^^^^^^^-- 
} 

/app.js

var logger = require('morgan'); 
... 
app.use(logger('dev')); 

爲什麼要同時使用?不能只將其中一個用於兩個目的?

回答

1

morgan是您通常作爲中間件附加的庫,然後在請求流經您的系統時自動記錄信息,尤其是關於timing。我不相信這是你通常手動調用其他日誌記錄的東西。

debug是你手動添加的東西,其他信息morgan不一定知道或關心。您還可以通過在環境變量中使用正則表達式來打開和關閉debug登錄和關閉,這對於在調試問題時將名稱空間記錄限制爲您關心的日誌非常有用。見here

因此,您可以使用debug以相同的方式和morgan做同樣的事情,但您必須手工完成(無論好壞)。

+0

謝謝,但我可以很容易地用'debug()'編寫一個函數,並將其添加爲中間件。還有其他的東西 –

+0

這就是[非常多](https://github.com/expressjs/morgan/blob/58a7f26ec699fef99e3ed11209503367fa3d2c9c/index.js#L129-L130)。您還需要自己的計時方法來跟蹤請求需要多長時間,並且如果您想完全模仿「摩根」,可以更改日誌記錄[格式](https://github.com/expressjs/morgan/blob/ 58a7f26ec699fef99e3ed11209503367fa3d2c9c/index.js#L152)。 – dvlsg

+0

謝謝,[這](http://stackoverflow.com/questions/23494956/how-to-use-morgan-logger)線程解釋了很多關於'摩根'的東西。我特別喜歡這個解釋:'Morgan的構建方式是像Apache和Nginx這樣的服務器登錄到error_log或access_log.'的方式進行日誌記錄。你可能想從線索中添加一些細節到你的答案。 –

相關問題