W3CLogger in ASP.NET Core

W3CLogger è un middleware che scrive i file di log nel formato standard W3C. I log contengono informazioni sulle richieste HTTP e sulle risposte HTTP. W3CLogger fornisce i log di:

  • Informazioni sulle richieste HTTP
  • Proprietà comuni
  • Intestazioni
  • Informazioni sulle risposte HTTP
  • Metadati relativi alla coppia richiesta/risposta (data/ora di inizio, tempo impiegato)

W3CLogger risulta utile in diversi scenari per:

  • Registrare informazioni sulle richieste e le risposte in ingresso.
  • Filtrare le parti della richiesta e della risposta registrate.
  • Filtrare le intestazioni da registrare.

W3CLogger può ridurre le prestazioni di un'app. Si consideri l'impatto sulle prestazioni quando si selezionano i campi da registrare. La riduzione delle prestazioni aumenterà man mano che si registrano altre proprietà. Testare l'impatto sulle prestazioni delle proprietà di registrazione selezionate.

Avviso

W3CLogger può registrare potenzialmente informazioni personali. Tenere conto di questo rischio ed evitare la registrazione di informazioni sensibili. Per impostazione predefinita, i campi che potrebbero contenere informazioni personali non vengono registrati.

Abilitare W3CLogger

Abilitare W3CLogger con UseW3CLogging, che aggiunge il middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Per impostazione predefinita, W3CLogger registra proprietà comuni, ad esempio percorso, codice di stato, data, ora e protocollo. Tutte le informazioni su una singola coppia di richiesta/risposta vengono scritte nella stessa riga.

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

Opzioni di W3CLogger

Per configurare il middleware W3CLogger, chiamare AddW3CLogging in 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 è un'enumerazione di flag di bit che configura parti specifiche della richiesta e della risposta da registrare e altre informazioni sulla connessione. LoggingFields per impostazione predefinita include tutti i campi possibili ad eccezione UserName di e Cookie. Per un elenco completo dei campi disponibili, vedere W3CLoggingFields.

W3CLogger è un middleware che scrive i file di log nel formato standard W3C. I log contengono informazioni sulle richieste HTTP e sulle risposte HTTP. W3CLogger fornisce i log di:

  • Informazioni sulle richieste HTTP
  • Proprietà comuni
  • Intestazioni
  • Informazioni sulle risposte HTTP
  • Metadati relativi alla coppia richiesta/risposta (data/ora di inizio, tempo impiegato)

W3CLogger risulta utile in diversi scenari per:

  • Registrare informazioni sulle richieste e le risposte in ingresso.
  • Filtrare le parti della richiesta e della risposta registrate.
  • Filtrare le intestazioni da registrare.

W3CLogger può ridurre le prestazioni di un'app. Si consideri l'impatto sulle prestazioni quando si selezionano i campi da registrare. La riduzione delle prestazioni aumenterà man mano che si registrano altre proprietà. Testare l'impatto sulle prestazioni delle proprietà di registrazione selezionate.

Avviso

W3CLogger può registrare potenzialmente informazioni personali. Tenere conto di questo rischio ed evitare la registrazione di informazioni sensibili. Per impostazione predefinita, i campi che potrebbero contenere informazioni personali non vengono registrati.

Abilitare W3CLogger

Abilitare W3CLogger con UseW3CLogging, che aggiunge il middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Per impostazione predefinita, W3CLogger registra proprietà comuni, ad esempio percorso, codice di stato, data, ora e protocollo. Tutte le informazioni su una singola coppia di richiesta/risposta vengono scritte nella stessa riga.

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

Opzioni di W3CLogger

Per configurare il middleware W3CLogger, chiamare AddW3CLogging in 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 è un'enumerazione di flag di bit che configura parti specifiche della richiesta e della risposta da registrare e altre informazioni sulla connessione. LoggingFields per impostazione predefinita include tutti i campi possibili ad eccezione UserName di e Cookie. Per un elenco completo dei campi disponibili, vedere W3CLoggingFields.