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);
});