ASP.NET Core W3CLogger

W3CLogger, günlük dosyalarını W3C standart biçimindeyazan bir ara yazılım. Günlükler HTTP istekleri ve HTTP yanıtları hakkında bilgiler içerir. W3CLogger şu günlüklere ait Günlükler sağlar:

  • HTTP istek bilgileri
  • Ortak özellikler
  • Üst Bilgiler
  • HTTP yanıt bilgileri
  • İstek/yanıt çifti (başlangıç tarihi/saati, geçen süre) hakkında meta veriler

W3CLogger, 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.
  • Günlüğe kaydedilecek üst bilgileri filtreleyin.

W3CLogger , bir uygulamanın performansını azaltabilir. Günlüğe kaydedilecek alanları seçerken performans etkisini göz önünde bulundurun-daha fazla özelliği günlüğe kaydederken performans azaltma artar. Seçili günlük özelliklerinin performans etkisini test edin.

Uyarı

W3CLogger, kişisel olarak tanımlanabilen bilgileri (PII) kaydedebilir. Riskleri göz önünde bulundurun ve hassas bilgileri günlüğe kaydetmeyi önleyin. Varsayılan olarak, PII içerebilen alanlar günlüğe kaydedilmez.

W3CLogger etkinleştiriliyor

W3CLogger, UseW3CLogging W3CLogger ara yazılımını ekleyen ile etkindir.

app.UseW3CLogging();

app.UseRouting();

app.MapGet("/", () => "Hello World!");

app.Run();

Varsayılan olarak, W3CLogger yol, durum kodu, tarih, saat ve protokol gibi ortak özellikleri günlüğe kaydeder. Tek bir istek/yanıt çiftiyle ilgili tüm bilgiler aynı satıra yazılır.

#Version: 1.0
#Start-Date: 2021-09-29 22:18:28
#Fields: date time c-ip s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status time-taken cs-version cs-host cs(User-Agent) cs(Referer)
2021-09-29 22:18:28 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 59.9171 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -
2021-09-29 22:18:28 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 0.1802 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -
2021-09-29 22:18:30 ::1 DESKTOP-LH3TLTA ::1 5000 GET / - 200 0.0966 HTTP/1.1 localhost:5000 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/93.0.4577.82+Safari/537.36 -

W3CLogger seçenekleri

W3CLogger ara yazılımını yapılandırmak için çağrısı yapın AddW3CLogging ConfigureServices .

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

LoggingFields

W3CLoggerOptions.LoggingFields , isteğin belirli kısımlarını ve günlüğe yanıtı yapılandıran ve bağlantıyla ilgili diğer bilgilerin bulunduğu bir bit bayrak numaralandırmadır. LoggingFields ve hariç tüm olası alanları dahil etmek için varsayılan değer UserName Cookie .

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});
Bayrak Açıklama Değer
Hiçbiri Günlüğe kaydetme yok. 'dır
Date Etkinliğin oluştuğu tarih. 0x1
Time Etkinliğin gerçekleştiği zaman. 0x2
ClientIpAddress Sunucuya erişen istemcinin IP adresi. 4,
UserName Sunucuya erişen kimliği doğrulanmış kullanıcının adı. 0x8
ServerName Günlük girişinin oluşturulduğu sunucunun adı. 0x10
ServerIpAddress Günlük girişinin oluşturulduğu sunucunun IP adresi. 0x20
ServerPort İstemcinin bağlı olduğu bağlantı noktası numarası. 0x40
Method İstek Method . 0x80
UriStem Hem hem de içeren istek yolu Path PathBase . 0x100
UriQuery İstek QueryString . 0x200
ProtocolStatus Yanıt StatusCode . 0x400
TimeTaken İşlemin tüketilen süre (milisaniye cinsinden). 0x800
ProtocolVersion İstek Protocol . 0x1000
Host İstek Microsoft.AspNetCore.Http.Headers.HeaderNames.Host . 0x2000
UserAgent İstek Microsoft.AspNetCore.Http.Headers.HeaderNames.UserAgent . 0x4000
Cookie İstek Microsoft.AspNetCore.Http.Headers.HeaderNames.Cookie . 0x8000
Referer İstek Microsoft.AspNetCore.Http.Headers.HeaderNames.Referer . 0x10000
ConnectionInfoFields , Ve dahil olmak üzere HTTP bağlantısı hakkında bir özellik koleksiyonunu günlüğe kaydetme bayrağı ClientIpAddress ServerIpAddress ServerPort . ClientIpAddress | ServerIpAddress | ServerPort
RequestHeaders , Ve dahil olmak üzere istek üstbilgileri koleksiyonunu günlüğe kaydetme Host bayrağı Referer UserAgent . Host | Referer | UserAgent
Request ,,, Ve dahil olmak üzere, istek hakkında bir özellik koleksiyonunu günlüğe kaydetme bayrağı UriStem UriQuery ProtocolVersion Method RequestHeaders . UriStem | UriQuery | ProtocolVersion | Method | RequestHeaders
All Tüm olası alanları günlüğe kaydetme bayrağı. Date | Time | ServerName | Method | UriStem | UriQuery | ProtocolStatus | TimeTaken | ProtocolVersion | Host | UserAgent | Referer | ConnectionInfoFields | UserName | Cookie

FileSizeLimit

Bayt cinsinden en büyük günlük dosyası boyutu. Varsayılan değer 10 MiB olur.

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

RetainedFileCountLimit

Uygulamadan önce, uygulama başına diskte saklanacak en fazla dosya sayısı. Varsayılan olarak 4, 10.000,

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

FileName

Günlük dosyası adı için kullanılacak önek. Geçerli tarih ve biçimde bir dosya numarası {YYYYMMDD.X} eklenir.

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

LogDirectory

Günlük dosyasının yazılacağı dizin. ./logs/, Uygulama dizinine göre varsayılan olarak olur.

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});

FlushInterval

Günlük dosyasına günlüklerin ne kadar süre sonra temizleneceği. Varsayılan 1 saniyedir.

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;
    
    logging.FileSizeLimit = 5 * 1024 * 1024;
    logging.RetainedFileCountLimit = 2;
    logging.FileName = "MyLogFile";
    logging.LogDirectory = @"C:\logs";
    logging.FlushInterval = TimeSpan.FromSeconds(2);
});