1
child.log.info('info');
child.log.debug('debug');

次のコマンドを使用します。

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

ただし、INFO のみが表示されます。DEBUG を表示しません。コンソールにデバッグ メッセージを表示したくないのですが、何が間違っていますか?

4

2 に答える 2

2

ロガーを作成するときは、levelオプションを使用して、bunyan がログ メッセージを出力するレベルを設定します。

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

同様に、levelオプションを使用して、子ロガーがログ メッセージを出力するレベルを設定します。

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

インスタンス化時に設定されたこのlevelオプションは、bunyan によって出力されるログ メッセージの最小レベルを決定します。

コマンド ライン スイッチ-l( または--level) は単なるフィルターです。特定のレベル以上で発行されたメッセージを通過できます。ただし、bunyan のインスタンスによって出力されるログ メッセージの最小レベルは設定されません。

"debug"たとえば、以上のレベルでログ メッセージを出力する bunyan のインスタンスが必要だとします。私は以下を入れることができます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()は除外されました。

于 2016-12-16T19:49:34.530 に答える