child.log.info('info');
child.log.debug('debug');
我用下面的命令:顯示調試消息在班揚
node app.js | bunyan -o short -l debug
但是它只能顯示信息。不顯示DEBUG。我想在控制檯中顯示調試消息,我做錯了什麼?
child.log.info('info');
child.log.debug('debug');
我用下面的命令:顯示調試消息在班揚
node app.js | bunyan -o short -l debug
但是它只能顯示信息。不顯示DEBUG。我想在控制檯中顯示調試消息,我做錯了什麼?
當你創建一個記錄器,使用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()
呼叫被過濾掉。
,同時爲不同的日誌級別流,像
bunyan.createLogger({
name: <name>,
streams: [{
level : 'debug',
stream : process.stdout
}]
});
創建調試流這用你所有的調試日誌將被傳輸到控制檯。