昔は、Web アプリケーションへの各リクエストが 1 つのスレッドで処理されていたので、ログを理解するのはかなり簡単でした。たとえば、サーブレット フィルタを使用して、ある種のリクエスト ID を持つリクエストを処理していたスレッドに名前を付けることができます。このリクエスト ID は、ログに出力される可能性があります。この世界では、簡単な grep だけで特定のリクエストのログ行を収集できました。
私の現在の立場では、Scala を使用して Web アプリケーションを構築しています (Scalatra を使用していますが、それは私の質問とは特に関係ありません)。各リクエストは scala.concurrent.Future を作成し、その Future が完了するまで保留されます。ここで重要な点は、実際にビジネス ロジックを処理するスレッドは、要求を完了するスレッドとは異なる (私が思うに) 要求を処理したスレッドとは異なるため、処理中にその要求のコンテキストが失われることです。ビジネス ロジックは好きなものをすべてログに記録できますが、そのログを関連する特定の要求に関連付けるのは困難です。
本番環境で Web サービスをサポートするという観点から見ると、古いアプローチは優れていたので、非同期サービスにも同様の方法を考案したいと考えています。私はそれを行う方法を考え出そうとしていましたが、空になってしまいました。つまり、私は古いスレッド名モデルほど軽量なものを思い付いていません。Stack Overflow から何か提案はありますか?
ありがとう