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