ASP.NET Core HTTP günlüğü
HTTP günlüğü, HTTP istekleri ve HTTP yanıtları hakkındaki bilgileri günlüğe kaydeden bir ara yazılım. HTTP günlüğü şu günlükleri sağlar:
- HTTP istek bilgileri
- Ortak özellikler
- Üst Bilgiler
- Gövde
- HTTP yanıt bilgileri
HTTP günlüğü, aşağıdakileri yapmak için çeşitli senaryolarda değerlidir:
- Gelen istekler ve yanıtlarla ilgili bilgileri kaydedin.
- İstek ve yanıtın hangi bölümlerinin günlüğe kaydedileceğini filtreleyin.
- Hangi üst bilgilerin günlüğe kaydedileceği filtreleniyor.
HTTP günlüğü, özellikle istek ve yanıt gövdelerini günlüğe kaydederken bir uygulamanın performansını azaltabilir. Günlüğe kaydedilecek alanları seçerken performans etkisini göz önünde bulundurun. Seçili günlük özelliklerinin performans etkisini test edin.
Uyarı
HTTP günlüğü, kişisel olarak tanımlanabilen bilgileri (PII) günlüğe kaydedebilir. Riskleri göz önünde bulundurun ve hassas bilgileri günlüğe kaydetmeyi önleyin.
HTTP günlüğünü etkinleştirme
Http günlüğü, ile etkinleştirilir UseHttpLogging ve http günlüğü ara yazılımı ekler.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpLogging();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
}
Varsayılan olarak HTTP günlüğü, istekler ve yanıtlar için yol, durum kodu ve üstbilgiler gibi ortak özellikleri günlüğe kaydeder. Çıktı, öğesinde tek bir ileti olarak günlüğe kaydedilir LogLevel.Information .

HTTP günlüğü seçenekleri
HTTP günlüğü ara yazılımını yapılandırmak için ' de çağrısı yapın AddHttpLogging ConfigureServices .
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}
LoggingFields
HttpLoggingOptions.LoggingFields , isteğin belirli kısımlarını ve günlüğe yanıtı yapılandıran bir sabit listesi bayrağıdır. LoggingFields Varsayılan olarak olur RequestPropertiesAndHeaders | ResponsePropertiesAndHeaders .
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}
| Bayrak | HTTP günlüğe kaydetme bayrağı | Değer |
|---|---|---|
| Hiçbiri | Günlüğe kaydetme yok. | 'dır |
RequestPath |
Hem hem de içeren istek yolu Path PathBase . | 0x1 |
RequestQuery |
İstek QueryString . | 0x2 |
RequestProtocol |
İstek Protocol . | 4, |
RequestMethod |
İstek Method . | 0x8 |
RequestScheme |
İstek Scheme . | 0x10 |
ResponseStatusCode |
Yanıt StatusCode . | 0x20 |
RequestHeaders |
İstek Headers . İstek üst bilgileri, ara yazılım çağrılır almaz günlüğe kaydedilir. İçinde belirtilmedikçe, üst bilgiler ' [redaksiyonu] ' karakteriyle varsayılan olarak redaksiyonu yapılır HttpLoggingOptions.RequestHeaders . |
0x40 |
ResponseHeaders |
Yanıt Headers . Yanıt üst bilgileri, Body veya ne zaman çağrıldığında günlüğe kaydedilir StartAsync . İçinde belirtilmedikçe, üst bilgiler ' [redaksiyonu] ' karakteriyle varsayılan olarak redaksiyonu yapılır HttpLoggingOptions.ResponseHeaders . |
0x80 |
RequestTrailers |
Ihttprequesttrailersfeature. Treyiiste. İstek tanıtımları Şu anda günlüğe kaydedilmez. | 0x100 |
ResponseTrailers |
Yanıt IHttpResponseTrailersFeature. Treyi. Yanıt tanıtımları Şu anda günlüğe kaydedilmez. | 0x200 |
RequestBody |
İstek Body . İstek gövdesinin günlük kaydı, tüm istek gövdesinin arabelleğe alınması gerektiğinden performansı etkiler HttpLoggingOptions.RequestBodyLogLimit . |
0x400 |
ResponseBody |
Yanıt Body . Yanıt gövdesinin günlüğe kaydedilmesi, tüm yanıt gövdesinin arabelleğe alınması gerektiğinden performans etkilerine sahip olur HttpLoggingOptions.ResponseBodyLogLimit . |
0x800 |
RequestProperties |
,,, Ve dahil olmak üzere http istek özelliklerinin bir koleksiyonunu günlüğe kaydetme bayrağı RequestPath RequestQuery RequestProtocol RequestMethod RequestScheme . |
RequestPath | RequestQuery | RequestProtocol | RequestMethod | RequestScheme |
RequestPropertiesAndHeaders |
HTTP Istek özelliklerini ve üstbilgilerini günlüğe kaydetme bayrağı. RequestPropertiesVe içerir RequestHeaders . |
RequestProperties | RequestHeaders |
ResponsePropertiesAndHeaders |
HTTP yanıtı özelliklerini ve üstbilgilerini günlüğe kaydetme bayrağı. ResponseStatusCodeVe içerir ResponseHeaders . |
ResponseStatusCode | ResponseHeaders |
Request |
Tüm HTTP Isteğini günlüğe kaydetme bayrağı. RequestPropertiesAndHeadersVe içerir RequestBody . İstek gövdesinin günlük kaydı, tüm istek gövdesinin arabelleğe alınması gerektiğinden performansı etkiler HttpLoggingOptions.RequestBodyLogLimit . |
RequestPropertiesAndHeaders | RequestBody |
Response |
Tüm HTTP yanıtının günlüğe kaydedilmesini belirten bayrak. ResponseStatusCode, ResponseHeaders , Ve içerir ResponseBody . Yanıt gövdesinin günlüğe kaydedilmesi, tüm yanıt gövdesinin arabelleğe alınması gerektiğinden performans etkilerine sahip olur HttpLoggingOptions.ResponseBodyLogLimit . |
ResponseStatusCode | ResponseHeaders | ResponseBody |
All |
Hem HTTP Isteğini hem de yanıtı günlüğe kaydetme bayrağı. RequestVe içerir Response . İsteğin ve yanıt gövdesinin tüm istek ve yanıt gövdesinin arabelleğe alınması gerektiğinden, istek ve yanıt gövdesinin günlüğe kaydedilmesi performansı etkiler HttpLoggingOptions.RequestBodyLogLimit HttpLoggingOptions.ResponseBodyLogLimit . |
Request | Response |
RequestHeaders
RequestHeaders günlüğe kaydedilecek bir HTTP Istek üst bilgisi kümesidir. Üst bilgi değerleri yalnızca bu koleksiyonda bulunan üst bilgi adları için günlüğe kaydedilir.
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}
ResponseHeaders
ResponseHeaders günlüğe kaydedilecek bir HTTP yanıt üst bilgileri kümesidir. Üst bilgi değerleri yalnızca bu koleksiyonda bulunan üst bilgi adları için günlüğe kaydedilir.
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}
MediaTypeOptions
MediaTypeOptions belirli bir medya türü için kullanılacak kodlamayı seçme için yapılandırma sağlar.
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}
MediaTypeOptions Yöntem
public void AddText(string contentType)- UTF-8 kodlaması kullanılarak metin olarak günlüğe kaydetme için kullanılacak bir contentType ekler.
public void AddText(string contentType, Encoding encoding)- Belirtilen kodlamayı kullanarak metin olarak günlüğe kaydetmek için kullanılacak bir contentType ekler.
public void AddBinary(MediaTypeHeaderValue mediaType)MediaTypeHeaderValueİkili olarak günlüğe kaydetmek için kullanılacak bir ekler.
public void AddBinary(string contentType)- Belirtilen içerik türünü kullanarak metin olarak günlüğe kaydetme için kullanılacak bir içerik ekler.
public void Clear()- Tüm MediaTypes türlerini temizler.
RequestBodyLogLimit
Günlüğe kaydedilecek en büyük istek gövdesi boyutu (bayt). Varsayılan olarak 32 KB 'tır.
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}
ResponseBodyLogLimit
Günlüğe kaydedilecek en büyük yanıt gövdesi boyutu (bayt). Varsayılan olarak 32 KB 'tır.
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpLogging(logging =>
{
// Customize HTTP logging here.
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestHeaders.Add("My-Request-Header");
logging.ResponseHeaders.Add("My-Response-Header");
logging.MediaTypeOptions.AddText("application/javascript");
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
});
}