web-dev-qa-db-ja.com

ASP.NET Core 2アプリケーションで各リクエストを一意に識別する方法(ロギング用)

ASP.NET Core 2アプリケーションでは、各リクエストに一意の識別子(例:Guid)が必要なので、各ログにそのidを含め、各リクエストのログのシーケンスを理解できます。

これを自分で書くのは難しいことではありませんが、使用できる組み込み機能や、これを実現するASP.NET Core 2の方法があるのでしょうか。

12
Victor

System.Diagnostics.Activityクラスを使用できます( source )。から アクティビティユーザーガイド

Activity.Idは、 HTTP Correlation Protocol に関して階層的なRequest-Idとして機能します

これは、たとえばアプリ監視のために Microsoft/ApplicationInsights-aspnetcore によって使用されます。

10
Set

ASP.NET CoreにはHttpContext.TraceIdentifierこれは、現在のリクエストを一意に識別します。

Kestrelによって各着信要求に対して生成されるため、呼び出しを別のサービスから1つのサービスに関連付けるのには適していませんが、単一の要求のログを相互に関連付ける、またはユーザーに表示される可能性のあるエラーメッセージを関連付けるには適しています対応するログ。

10
Andrew

correlation id を探しているように聞こえます。多分 相関IDミドルウェア が役立つでしょうか?

1
Mark G