W3CLogger dans ASP.NET Core

W3CLogger est un middleware (intergiciel) qui écrit des fichiers journaux au format normalisé du W3C. Les journaux contiennent des informations sur les requêtes HTTP et les réponses HTTP. W3CLogger fournit des journaux relatifs aux éléments suivants :

  • Informations sur les requêtes HTTP
  • Propriétés communes
  • En-têtes
  • Informations de réponse HTTP
  • Métadonnées relatives à la paire requête/réponse (date/heure de début, temps nécessaire)

W3CLogger est utile dans plusieurs scénarios pour :

  • Enregistrer des informations sur les requêtes entrantes et les réponses.
  • Filtrer les parties des requêtes et des réponses à journaliser.
  • Filtrer les en-têtes à journaliser.

W3CLogger peut réduire les performances d’une application. Tenez compte de l’impact sur les performances au moment de la sélection des champs à journaliser. La réduction des performances augmente à mesure que vous journalisez davantage de propriétés. Testez l’impact des propriétés de journalisation sélectionnées sur les performances.

Avertissement

W3CLogger peut éventuellement journaliser des informations d’identification personnelle (PII). Tenez compte des risques, et évitez de journaliser des informations sensibles. Par défaut, les champs qui peuvent contenir des informations d’identification personnelle ne sont pas journalisés.

Activer W3CLogger

Activez W3CLogger avec UseW3CLogging, qui ajoute le middleware W3CLogger :

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Par défaut, W3CLogger journalise les propriétés courantes telles que le chemin, le code d’état, la date, l’heure et le protocole. Toutes les informations relatives à une seule paire requête/réponse sont écrites sur la même ligne.

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

Options de W3CLogger

Pour configurer le middleware W3CLogger, appelez AddW3CLogging dans 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 est une énumération d’indicateurs de bit qui configure des parties spécifiques de la requête et de la réponse à journaliser ainsi que d’autres informations relatives à la connexion. Par défaut, LoggingFields inclut tous les champs possibles à l’exception de UserName et Cookie. Pour obtenir la liste complète des champs disponibles, consultez W3CLoggingFields.

W3CLogger est un middleware (intergiciel) qui écrit des fichiers journaux au format normalisé du W3C. Les journaux contiennent des informations sur les requêtes HTTP et les réponses HTTP. W3CLogger fournit des journaux relatifs aux éléments suivants :

  • Informations sur les requêtes HTTP
  • Propriétés communes
  • En-têtes
  • Informations de réponse HTTP
  • Métadonnées relatives à la paire requête/réponse (date/heure de début, temps nécessaire)

W3CLogger est utile dans plusieurs scénarios pour :

  • Enregistrer des informations sur les requêtes entrantes et les réponses.
  • Filtrer les parties des requêtes et des réponses à journaliser.
  • Filtrer les en-têtes à journaliser.

W3CLogger peut réduire les performances d’une application. Tenez compte de l’impact sur les performances au moment de la sélection des champs à journaliser. La réduction des performances augmente à mesure que vous journalisez davantage de propriétés. Testez l’impact des propriétés de journalisation sélectionnées sur les performances.

Avertissement

W3CLogger peut éventuellement journaliser des informations d’identification personnelle (PII). Tenez compte des risques, et évitez de journaliser des informations sensibles. Par défaut, les champs qui peuvent contenir des informations d’identification personnelle ne sont pas journalisés.

Activer W3CLogger

Activez W3CLogger avec UseW3CLogging, qui ajoute le middleware W3CLogger :

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Par défaut, W3CLogger journalise les propriétés courantes telles que le chemin, le code d’état, la date, l’heure et le protocole. Toutes les informations relatives à une seule paire requête/réponse sont écrites sur la même ligne.

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

Options de W3CLogger

Pour configurer le middleware W3CLogger, appelez AddW3CLogging dans 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 est une énumération d’indicateurs de bit qui configure des parties spécifiques de la requête et de la réponse à journaliser ainsi que d’autres informations relatives à la connexion. Par défaut, LoggingFields inclut tous les champs possibles à l’exception de UserName et Cookie. Pour obtenir la liste complète des champs disponibles, consultez W3CLoggingFields.