W3CLogger in ASP.NET Core

W3CLogger ist eine Middleware, die Protokolldateien im W3C-Standardformat schreibt. Die Protokolle enthalten Informationen zu HTTP-Anforderungen und HTTP-Antworten. W3CLogger stellt Protokolle hiervon bereit:

  • HTTP-Anforderungsinformationen
  • Allgemeine Eigenschaften
  • Kopfzeilen
  • HTTP-Antwortinformationen
  • Metadaten zum Anforderungs-/Antwortpaar (Startdatum/-uhrzeit, Dauer)

W3CLogger ist in verschiedenen Szenarien nützlich, wie etwa:

  • Aufzeichnen von Informationen zu eingehenden Anforderungen und Antworten.
  • Filtern, welche Teile der Anforderung und Antwort protokolliert werden.
  • Filtern, welche Header protokolliert werden sollen.

W3CLogger kann die Leistung einer App beeinträchtigen. Berücksichtigen Sie die Auswirkungen auf die Leistung, wenn Sie die zu protokollierenden Felder auswählen. Die Leistung wird umso stärker beeinträchtigt, je mehr Eigenschaften Sie protokollieren. Testen Sie die Auswirkungen der ausgewählten Protokollierungseigenschaften auf die Leistung.

Warnung

W3CLogger kann potenziell personenbezogene Informationen (Personally Identifiable Information, PII) protokollieren. Berücksichtigen Sie das Risiko, und vermeiden Sie die Protokollierung vertraulicher Informationen. Standardmäßig werden Felder mit personenbezogenen Informationen nicht protokolliert werden.

Aktivieren von W3CLogger

Aktivieren Sie W3CLogger mit UseW3CLogging, wodurch die Middleware W3CLogger hinzugefügt wird:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Standardmäßig protokolliert W3CLogger allgemeine Eigenschaften wie Pfad, Statuscode, Datum, Uhrzeit und Protokoll. Alle Informationen zu einem einzelnen Anforderungs-/Antwortpaar werden in die gleiche Zeile geschrieben.

#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-Optionen

Zum Konfigurieren der W3CLogger-Middleware rufen Sie AddW3CLogging in Program.cs auf:

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 ist eine Bitflagenumeration, die bestimmte Teile der Anforderung und Antwort für die Protokollierung sowie andere Informationen zur Verbindung konfiguriert. LoggingFields schließt standardmäßig alle möglichen Felder außer UserName und Cookie ein. Eine vollständige Liste der verfügbaren Felder finden Sie unter W3CLoggingFields.

W3CLogger ist eine Middleware, die Protokolldateien im W3C-Standardformat schreibt. Die Protokolle enthalten Informationen zu HTTP-Anforderungen und HTTP-Antworten. W3CLogger stellt Protokolle hiervon bereit:

  • HTTP-Anforderungsinformationen
  • Allgemeine Eigenschaften
  • Kopfzeilen
  • HTTP-Antwortinformationen
  • Metadaten zum Anforderungs-/Antwortpaar (Startdatum/-uhrzeit, Dauer)

W3CLogger ist in verschiedenen Szenarien nützlich, wie etwa:

  • Aufzeichnen von Informationen zu eingehenden Anforderungen und Antworten.
  • Filtern, welche Teile der Anforderung und Antwort protokolliert werden.
  • Filtern, welche Header protokolliert werden sollen.

W3CLogger kann die Leistung einer App beeinträchtigen. Berücksichtigen Sie die Auswirkungen auf die Leistung, wenn Sie die zu protokollierenden Felder auswählen. Die Leistung wird umso stärker beeinträchtigt, je mehr Eigenschaften Sie protokollieren. Testen Sie die Auswirkungen der ausgewählten Protokollierungseigenschaften auf die Leistung.

Warnung

W3CLogger kann potenziell personenbezogene Informationen (Personally Identifiable Information, PII) protokollieren. Berücksichtigen Sie das Risiko, und vermeiden Sie die Protokollierung vertraulicher Informationen. Standardmäßig werden Felder mit personenbezogenen Informationen nicht protokolliert werden.

Aktivieren von W3CLogger

Aktivieren Sie W3CLogger mit UseW3CLogging, wodurch die Middleware W3CLogger hinzugefügt wird:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Standardmäßig protokolliert W3CLogger allgemeine Eigenschaften wie Pfad, Statuscode, Datum, Uhrzeit und Protokoll. Alle Informationen zu einem einzelnen Anforderungs-/Antwortpaar werden in die gleiche Zeile geschrieben.

#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-Optionen

Zum Konfigurieren der W3CLogger-Middleware rufen Sie AddW3CLogging in Program.cs auf:

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 ist eine Bitflagenumeration, die bestimmte Teile der Anforderung und Antwort für die Protokollierung sowie andere Informationen zur Verbindung konfiguriert. LoggingFields schließt standardmäßig alle möglichen Felder außer UserName und Cookie ein. Eine vollständige Liste der verfügbaren Felder finden Sie unter W3CLoggingFields.