Sdílet prostřednictvím


W3CLogger v ASP.NET Core

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Upozorňující

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Důležité

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.

Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

W3CLogger je middleware, který zapisuje soubory protokolů ve standardním formátu W3C. Protokoly obsahují informace o požadavcích HTTP a odpovědích HTTP. W3CLogger poskytuje protokoly pro:

  • Informace o požadavku HTTP
  • Obecné vlastnosti
  • Hlavičky
  • Informace o odpovědi HTTP
  • Metadata o páru požadavku a odpovědi (datum/čas zahájení, potřebná doba)

W3CLogger je velmi účinný v několika scénářích, kdy provádí následující:

  • Záznam informací o příchozích požadavcích a odpovědích
  • Filtrování, které části požadavku a odpovědi se protokolují
  • Filtrování záhlaví, která se mají protokolovat

W3CLogger může snížit výkon aplikace. Při výběru polí, která se mají protokolovat, zvažte dopad na výkon. Čím víc vlastností budete protokolovat, tím víc se sníží výkon. Otestujte dopad na výkon vybraných vlastností protokolování.

Upozorňující

W3CLogger může potenciálně protokolovat identifikovatelné osobní údaje (PII). Vezměte riziko do úvahy a vyhněte se protokolování citlivých informací. Ve výchozím nastavení se pole, která by mohla obsahovat identifikovatelné osobní údaje, neprotokolují.

Povolení W3CLoggeru

Povolte W3CLogger pomocí UseW3CLogging, což přidá middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

W3CLogger ve výchozím nastavení protokoluje běžné vlastnosti, jako je cesta, stavový kód, datum, čas a protokol. Všechny informace o jednom páru požadavku a odpovědi se zapíšou 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

Chcete-li nakonfigurovat middleware W3CLogger, zavolejte AddW3CLogging v souboru Program.cs:

var builder = WebApplication.CreateBuilder(args);

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í protokolované části požadavku a odpovědi a další informace o připojení. Ve výchozím nastavení LoggingFields zahrnuje všechna možná pole s výjimkou UserName a Cookie. Úplný seznam dostupných polí obsahuje W3CLoggingFields.

W3CLogger je middleware, který zapisuje soubory protokolů ve standardním formátu W3C. Protokoly obsahují informace o požadavcích HTTP a odpovědích HTTP. W3CLogger poskytuje protokoly pro:

  • Informace o požadavku HTTP
  • Obecné vlastnosti
  • Hlavičky
  • Informace o odpovědi HTTP
  • Metadata o páru požadavku a odpovědi (datum/čas zahájení, potřebná doba)

W3CLogger je velmi účinný v několika scénářích, kdy provádí následující:

  • Záznam informací o příchozích požadavcích a odpovědích
  • Filtrování, které části požadavku a odpovědi se protokolují
  • Filtrování záhlaví, která se mají protokolovat

W3CLogger může snížit výkon aplikace. Při výběru polí, která se mají protokolovat, zvažte dopad na výkon. Čím víc vlastností budete protokolovat, tím víc se sníží výkon. Otestujte dopad na výkon vybraných vlastností protokolování.

Upozorňující

W3CLogger může potenciálně protokolovat identifikovatelné osobní údaje (PII). Vezměte riziko do úvahy a vyhněte se protokolování citlivých informací. Ve výchozím nastavení se pole, která by mohla obsahovat identifikovatelné osobní údaje, neprotokolují.

Povolení W3CLoggeru

Povolte W3CLogger pomocí UseW3CLogging, což přidá middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

W3CLogger ve výchozím nastavení protokoluje běžné vlastnosti, jako je cesta, stavový kód, datum, čas a protokol. Všechny informace o jednom páru požadavku a odpovědi se zapíšou 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

Chcete-li nakonfigurovat middleware W3CLogger, zavolejte AddW3CLogging v souboru Program.cs:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddW3CLogging(logging =>
{
    // Log all W3C fields
    logging.LoggingFields = W3CLoggingFields.All;

    logging.AdditionalRequestHeaders.Add("x-forwarded-for");
    logging.AdditionalRequestHeaders.Add("x-client-ssl-protocol");
    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í protokolované části požadavku a odpovědi a další informace o připojení. Ve výchozím nastavení LoggingFields zahrnuje všechna možná pole s výjimkou UserName a Cookie. Úplný seznam dostupných polí obsahuje W3CLoggingFields.