1

一見単純な質問ですが、私が慣れ親しんでいるもの (Python や LAMP など) と同等の node.js が不明であり、実際には存在しない可能性があると思います。

問題文: Express アプリで基本的で単純なロギングを使用したいと考えています。後で他のバックエンド システムで使用できるように、DEBUG メッセージ、INFO メッセージ、または一部の統計情報をログに出力したい場合があります。

1) ただし、すべてのログ メッセージにいくつかのフィールドを含める必要があります。たとえば、remote-ip と request url です。

2) 一方、ログを記録するコードは、コール ツリーの奥深くを含め、アプリのいたるところにあります。

3)呼び出しツリーのすべてのノードに渡したくありません(req,res)(これは、ほとんど必要のない場所に多くのパラメーターを渡すだけであり、これらを非同期コールバックやタイムアウトなどに渡す必要があるため、コードを複雑にします) .)

リクエストごとにスレッドがある他のシステムでは、(req,res) ペア (必要なすべてのデータがある場所) をスレッド ローカル ストレージに格納し、ロガーがこれを読み取り、メッセージをフォーマットします。

ノードには、スレッドが 1 つしかありません。ここで私の代替手段は何ですか?「特定のコードが実行されているリクエスト コンテキスト」とは何ですか?

このようなことを達成する唯一の方法は、トレースを調べ、リフレクションを使用してコール ツリーのローカル変数を調べることです。私はそれが嫌いで、さらに、すべてのコールバック、setTimeouts、setIntervals、new Function()、eval などにこれを実装する必要があります。リストは続きます。

他の人は何をしていますか?

4

0 に答える 0