HTTP: IHttpClientFactory günlüğü tamsayı durum kodları tarafından oluşturulan HttpClient örnekleri
HttpClient http durum kodları tarafından IHttpClientFactory oluşturulan örnekler, durum kodu adları yerine tamsayılar olarak günlüğe kaydedilir.
Sürüm kullanıma sunulmuştur
5.0 Önizleme 1
Eski davranış
Günlüğe kaydetme, HTTP durum kodlarının metinsel açıklamalarını kullanır. Aşağıdaki günlük iletilerini göz önünde bulundurun:
Received HTTP response after 56.0044ms - OK
End processing HTTP request after 70.0862ms - OK
Yeni davranış
Günlüğe kaydetme, HTTP durum kodlarının tamsayı değerlerini kullanır. Aşağıdaki günlük iletilerini göz önünde bulundurun:
Received HTTP response after 56.0044ms - 200
End processing HTTP request after 70.0862ms - 200
Değişiklik nedeni
Bu günlüğün özgün davranışı, ASP.NET Core'un her zaman tamsayı değerleri kullanan diğer bölümleriyle tutarsız. Tutarsızlık, elasticsearch gibi yapılandırılmış günlük sistemleri aracılığıyla günlükleri sorgulamayı zorlaştırır. Daha fazla bağlam için bkz . dotnet/extensions#1549.
Tamsayı değerlerinin kullanılması, değer aralıklarında sorgulara izin verdiğinden metinden daha esnektir.
Tamsayı durum kodunu yakalamak için başka bir günlük değeri eklenmesi göz önünde bulunduruldu. Ne yazık ki bunu yapmak, ASP.NET Core'un geri kalanıyla başka bir tutarsızlığa neden olabilir. HttpClient günlüğü ve HTTP sunucusu/barındırma günlüğü zaten aynı StatusCode
anahtar adını kullanır.
Önerilen eylem
En iyi seçenek, günlük sorgularını durum kodlarının tamsayı değerlerini kullanacak şekilde güncelleştirmektir. Bu seçenek, birden çok ASP.NET Core sürümünde sorgu yazmakta zorlanabilir. Ancak, bu amaç için tamsayıları kullanmak günlükleri sorgulamak için çok daha esnektir.
Eski davranışla uyumluluğu zorlamanız ve metinsel durum kodları kullanmanız gerekiyorsa, günlüğü kendinizle değiştirin IHttpClientFactory
:
Aşağıdaki sınıfların .NET Core 3.1 sürümlerini projenize kopyalayın:
Microsoft.Extensions.Http NuGet paketindeki genel türlerle çakışmaları önlemek için sınıfları yeniden adlandırın.
projesinin
Startup.ConfigureServices
yönteminde yerleşik uygulamasınıLoggingHttpMessageHandlerBuilderFilter
kendi uygulamanızla değiştirin. Örneğin: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>(); }
Etkilenen API’ler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin