W3CLogger v ASP.NET Core
W3CLogger je middleware, který zapisuje soubory protokolu ve standardním formátu W3C. Protokoly obsahují informace o požadavcích HTTP a odpovědích HTTP. W3CLogger poskytuje protokoly:
- Informace o požadavku HTTP
- Společné vlastnosti
- Hlavičky
- Informace o odpovědi HTTP
- Metadata týkající se páru požadavků a odpovědí (datum a čas spuštění, čas)
W3CLogger je užitečný v několika scénářích:
- Zaznamená informace o příchozích požadavcích a odpovědích.
- Vyfiltrujte, které části požadavku a odpovědi se budou protokolovat.
- Vyfiltrujte hlavičky, které se mají protokolovat.
W3CLogger může snížit výkon aplikace. Při výběru polí k protokolování zvažte dopad na výkon – při protokolování dalších vlastností se zvýší snížení výkonu. Otestujte dopad vybraných vlastností protokolování na výkon.
Upozornění
W3CLogger může potenciálně protokolovat identifikovatelné osobní údaje (PII). Zvažte riziko a vyhněte se protokolování citlivých informací. Ve výchozím nastavení se pole, která by mohla obsahovat PII, nezaprotokoluje.
Povolení W3CLoggeru
W3CLogger je povolený s UseW3CLogging , který přidává middleware W3CLogger.
app.UseW3CLogging();
app.UseRouting();
app.MapGet("/", () => "Hello World!");
app.Run();
Ve výchozím nastavení protokolovací nástroj W3CLogger protokoluje běžné vlastnosti, jako je cesta, stavový kód, datum, čas a protokol. Všechny informace o jednom páru požadavků a odpovědí se zapisou na stejný řádek.
#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 -
Možnosti W3CLoggeru
Pokud chcete nakonfigurovat middleware W3CLogger, volejte v 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 je výčet bitových příznaků, který konfiguruje konkrétní části požadavku a odpovědi na protokol a další informace o připojení. LoggingFields Ve výchozím nastavení se zahrnou všechna možná pole kromě a 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);
});
| Příznak | Popis | Hodnota |
|---|---|---|
| Žádné | Žádné protokolování. | 0x0 |
Date |
Datum, kdy k aktivitě došlo. | 0x1 |
Time |
Čas, kdy k aktivitě došlo. | 0x2 |
ClientIpAddress |
IP adresa klienta, který přistupuje k serveru. | 0x4 |
UserName |
Jméno ověřeného uživatele, který přistupoval k serveru. | 0x8 |
ServerName |
Název serveru, na kterém byla položka protokolu vygenerována. | 0x10 |
ServerIpAddress |
IP adresa serveru, na kterém byla položka protokolu vygenerována. | 0x20 |
ServerPort |
Číslo portu, ke které je klient připojený. | 0x40 |
Method |
Vyžádejte Method si . | 0x80 |
UriStem |
Cesta požadavku, která zahrnuje Path i PathBase . | 0x100 |
UriQuery |
Vyžádejte QueryString si . | 0x200 |
ProtocolStatus |
Odpověď StatusCode : | 0x400 |
TimeTaken |
Doba trvání akce v milisekundách, kterou akce spotřebuje | 0x800 |
ProtocolVersion |
Vyžádejte Protocol si . | 0x1000 |
Host |
Vyžádejte Microsoft.AspNetCore.Http.Headers.HeaderNames.Host si . |
0x2000 |
UserAgent |
Vyžádejte Microsoft.AspNetCore.Http.Headers.HeaderNames.UserAgent si . |
0x4000 |
Cookie |
Vyžádejte Microsoft.AspNetCore.Http.Headers.HeaderNames.Cookie si . |
0x8000 |
Referer |
Vyžádejte Microsoft.AspNetCore.Http.Headers.HeaderNames.Referer si . |
0x10000 |
ConnectionInfoFields |
Příznak pro protokolování kolekce vlastností o připojení HTTP, včetně , a ClientIpAddress ServerIpAddress ServerPort . |
ClientIpAddress | ServerIpAddress | ServerPort |
RequestHeaders |
Příznak pro protokolování kolekce hlaviček požadavků, včetně Host Referer , a UserAgent . |
Host | Referer | UserAgent |
Request |
Příznak pro protokolování kolekce vlastností požadavku, včetně UriStem , , , a UriQuery ProtocolVersion Method RequestHeaders . |
UriStem | UriQuery | ProtocolVersion | Method | RequestHeaders |
All |
Příznak pro protokolování všech možných polí | Date | Time | ServerName | Method | UriStem | UriQuery | ProtocolStatus | TimeTaken | ProtocolVersion | Host | UserAgent | Referer | ConnectionInfoFields | UserName | Cookie |
FileSizeLimit
Maximální velikost souboru protokolu v bajtech. Výchozí hodnota je 10 MiB.
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
Maximální počet souborů, které se uchová na disku před vrácením, na aplikaci. Výchozí hodnota je 4 a je 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
Předpona, která se má použít pro název souboru protokolu. Připojí se aktuální datum plus číslo souboru ve {YYYYMMDD.X} formátu .
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
Adresář, do které se bude zapisovat soubor protokolu. Ve výchozím nastavení ./logs/ je relativní vzhledem k adresáři aplikace.
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
Období, po jehož uplynutí se protokoly vyprázdní do souboru protokolu. Výchozí hodnota je 1 sekunda.
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);
});