web-dev-qa-db-ja.com

Winston:ロギングレベルについて

ウィンストンを読んでいじくって、なぜログレベルがそのままの順序で並んでいるのか、なぜトランスポートがそのように動作するのか(少なくとも、コンソールはそうです)ことに戸惑っています。誰かが、おそらく完全にさえ、実際の使用例を使って、Winstonでのロギングがこのように機能する理由を説明できたら幸いです。

たとえば、ロガーを次のように設定します。

_var logger = new (winston.Logger)({
  levels: winston.config.syslog.levels,
  colors: winston.config.syslog.colors,
  level: "debug",  // I'm not sure what this option even does here???
  transports: [
    new (winston.transports.Console)({
      colorize: true,
      handleExceptions: true,
      json: false,
      level: "debug"
    })
  ]
});
_

したがって、logger.debug("Test");を実行すると、_debug: Test_が記録されます。しかし、logger.info("Test");を実行しても、何も起こりません。

私が抱えている問題は、コンソールにログを記録したい場合eveverythingbutdebugメッセージ、私は何をしますか? ...またはdebugおよびinfoメッセージでさえ、他のすべてをログに記録しますか?

Java=世界から、標準のロガーを使用して、debugwarnよりも「細かく」設定することに慣れており、ロガーは逆方向に動作しました。たとえば、ログレベルをinfoに設定すると、debug(または何か)以外のすべてがログに記録されました。

また、ロガーにerrorwarning、およびinfoメッセージのみをログに記録させたい場合、Winstonでそれをどのように実行しますか?

*編集*

どうやら、このレベルの順序は_winston.config.syslog.levels_に固有です。したがって、残っている唯一の質問は、「どういうわけか、トランスポートを特定のロギングレベルのみに制限することは可能ですか?」です。

18
Yanick Rochon

documentation のように、独自のログレベルを設定できます。0が最低で、色を関連付けることができます。最下位レベルをログに記録したくない場合は、levelプロパティを対応するレベルに設定するだけです。デフォルトでは、コンソールロガーのレベルはinfoに設定されています

だから、ここに例があります:

logger = new (winston.Logger)({
  levels: {
    'info': 0,
    'ok': 1,
    'error': 2
  }
  transports: [
    new (winston.transports.ConsoleTransport)(silent: options.silent, level: 'ok')
  ]
});
8
kumarharsh
var logger = new (winston.Logger)({
       levels: {
        'info': 0,
        'ok': 1,
        'error': 2
       },
    colors: {
        'info': 'red',
        'ok': 'green',
        'error': 'yellow'
       },
    transports: [
        new (winston.transports.Console)({level:'info',colorize: true})
    ]
});
logger.log('info',"This is info level");
logger.info("This is info level");
1