HTTP:IHttpClientFactory ログの整数状態コードによって作成された HttpClient インスタンス
IHttpClientFactory によって作成された HttpClient インスタンスでは、HTTP 状態コードが、状態コード名を付加するのではなく、整数としてログに記録されます。
導入されたバージョン
5.0 Preview 1
以前の動作
ログの HTTP 状態コードに説明テキストが使用されます。 次にログ メッセージの例を示します。
Received HTTP response after 56.0044ms - OK
End processing HTTP request after 70.0862ms - OK
新しい動作
ログの HTTP 状態コードに整数値が使用されます。 次にログ メッセージの例を示します。
Received HTTP response after 56.0044ms - 200
End processing HTTP request after 70.0862ms - 200
変更理由
このログの元の動作では、常に整数値が使用されている ASP.NET Core の他の部分と一貫性がありません。 一貫性がないため、Elasticsearch などの構造化ログ システムを使用したログのクエリが難しくなります。 詳細については、dotnet/extensions#1549 を参照してください。
整数値を使用すると、値の範囲に対してクエリを実行できるようになるため、テキストよりも柔軟性が向上します。
整数の状態コードを取得するログ値を別に追加することが検討されました。 残念ながら、これを行うと、ASP.NET Core の残りの部分にさらに不整合が生じます。 HttpClient ログと HTTP サーバー/ホスト ログで既に同じ StatusCode
キー名が使用されています。
推奨アクション
最適なオプションは、状態コードの整数値を使用するようにログ クエリを更新することです。 このオプションを選択すると、複数の ASP.NET Core バージョンに対するクエリの作成が難しくなる場合があります。 しかしながら、整数をこの目的に使用すると、ログのクエリの柔軟性が大きく向上します。
以前の動作との互換性を維持し、テキスト形式の状態コードを使用する必要がある場合は、IHttpClientFactory
ログを独自のものに置き換えます。
次のクラスの .NET Core 3.1 バージョンをプロジェクトにコピーします。
Microsoft.Extensions.Http NuGet パッケージでパブリック型との競合を避けるために、クラスの名前を変更します。
プロジェクトの
Startup.ConfigureServices
メソッドで、LoggingHttpMessageHandlerBuilderFilter
の組み込みの実装を独自のものに置き換えます。 次に例を示します。public void ConfigureServices(IServiceCollection services) { // Other service registrations go first. Code omitted for brevity. // Place the following after all AddHttpClient registrations. services.RemoveAll<IHttpMessageHandlerBuilderFilter>(); services.AddSingleton<IHttpMessageHandlerBuilderFilter, MyLoggingHttpMessageHandlerBuilderFilter>(); }
影響を受ける API
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示