3

log4js ライブラリが非同期かどうかを知りたい小さな質問があります。log4js ドキュメントを見つけようとしましたが、うまくいきませんでした。ノードjsアプリでこれを使用したいのですが、その前に非同期かどうかを知りたいですか?

4

1 に答える 1

4

ロガー自体は非同期ですが、それが使用しているアペンダーはそうではないかもしれません。

たとえば、log4js ロガーをアペンダーconsoleとして使用しています。バージョン 0.6 以降、 node.jsのコンソールは同期であることに注意してください。

log 関数を実行すると、LogEvent オブジェクトが作成され、logイベントが発行されます。

Logger.prototype.log = function() {
  var args = Array.prototype.slice.call(arguments)
  , logLevel = levels.toLevel(args.shift())
  , loggingEvent;
  if (this.isLevelEnabled(logLevel)) {
    loggingEvent = new LoggingEvent(this.category, logLevel, args, this);
    this.emit("log", loggingEvent);
  }
};

非同期であるかどうかを決定するのは、イベント リスナー次第です。非同期かどうかは、純粋にアペンダーの実装に依存することを意味します。利用可能なすべてのアペンダーはこちらで確認できます。

file.jsは非同期ですが、コンソールfileSyncは同期です。


すぐに、ロガーはリクエストをwriterに渡します。同期であるかどうかは、ライターの仕様によって異なります。コンソールが同期しているのには、実際には十分な理由があります。

于 2014-08-27T09:35:38.877 に答える