5

私の node.js アプリケーションでは、リクエストを受け取るたびに、一意の ID で「スタンプ」し、この ID でこのリクエストに関連するすべてのアクティビティ (ログ ステートメント) を追跡できるようにしたいと考えています。そのため、リクエストが着信し、その処理を下位のアプリケーション レイヤー (サービス、データベース呼び出しなど) に渡すと、指定されたリクエスト ID に一致するすべてのログを収集して、アプリ内の移動を再構築できるようにしたいと考えています。

この写真を持っているので、現在request-localモジュールを使用していますが、失敗したばかりの重い魔法を実行します (複数のリクエストからのログが同じ ID を取得します)。

コードはほとんどが Promises (プレーンな古いノード コールバックではない) に基づいており、高次関数を使用して実際の関数に依存関係を提供します (開始時にアプリケーション ツリーが構築されます)。

最初の非常に明白な解決策は、呼び出されたすべての関数にこのリクエスト ID を渡すことですが、それは惨事であり、私はそれを行うつもりはありません。

この id/context を追加の引数としてすべてのレベルの関数に明示的に渡すことなく、そのようなリクエスト追跡を (確実に) どのように行うのですか?

4

2 に答える 2