2016-02-08 102 views
0
child.log.info('info'); 
child.log.debug('debug'); 

我用下面的命令:顯示調試消息在班揚

node app.js | bunyan -o short -l debug 

但是它只能顯示信息。不顯示DEBUG。我想在控制檯中顯示調試消息,我做錯了什麼?

回答

0

當你創建一個記錄器,使用level選項設定在本仁會發出日誌消息的級別:

var log = bunyan.createLogger({ level: "debug" }); 

同樣,使用level選項設定在哪個子記錄器會發出日誌級別消息:

var child = log.child({ level: "debug" }); 

level選項設定在實例化時確定由發射本仁日誌消息的最低水平。

命令行開關-l(或--level)只是一個過濾器;它允許通過在給定級別或更高級別發送的消息。 但是,它並未設置由bunyan實例發出的日誌消息的最低級別。

例如,假設我想要一個bunyan的實例,它發出的日誌消息的級別爲"debug"或更高。我可以把下面的main.js

var bunyan = require("bunyan"); 
var log = bunyan.createLogger({ level: "debug" }); 

log.trace("Nitty gritty info here."); 
log.debug("Eek ork op."); 
log.info("The Red Zone is for loading and unloading only."); 

如果我運行在命令行下:

node main.js | bunyan 

我會看到這樣的輸出:

Eek ork op. 
The Red Zone is for loading and unloading only. 

通知我沒不會過濾來自命令行的任何內容,並且對log.trace()的調用也不會打印任何內容。

現在,鍵入此進入命令行:

node main.js | bunyan -l "debug" 

您將獲得:

Eek ork op. 
The Red Zone is for loading and unloading only. 

的和以前一樣。

現在,嘗試:

node main.js | bunyan -l "trace" 

您還是會像以前一樣得到同樣的輸出。

爲什麼?因爲您的bunyan實例設置爲發送"debug"級別或更高級別的消息。命令行開關-l只是一個過濾器。

最後,嘗試:

node main.js | bunyan -l "info" 

這個時候,你只會看到:

The Red Zone is for loading and unloading only. 

log.debug()呼叫被過濾掉。

0

,同時爲不同的日誌級別流,像

bunyan.createLogger({ 
    name: <name>, 
    streams: [{ 
     level : 'debug', 
     stream : process.stdout 
    }] 
}); 

創建調試流這用你所有的調試日誌將被傳輸到控制檯。