W3CLogger en ASP.NET Core

W3CLogger es un middleware que escribe archivos de registro en el formato estándar W3C. Los registros contienen información sobre las solicitudes y respuestas HTTP. W3CLogger proporciona registros de lo siguiente:

  • Información de solicitud HTTP
  • Propiedades comunes
  • encabezados
  • Información de respuesta HTTP
  • Metadatos sobre el par de solicitud y respuesta (fecha y hora de inicio, tiempo empleado)

W3CLogger es útil en varios escenarios para:

  • Registrar información sobre las solicitudes y respuestas entrantes.
  • Filtrar las partes de la solicitud y la respuesta que se registran.
  • Filtrar los encabezados que se registrarán.

W3CLogger puede reducir el rendimiento de una aplicación. Tenga en cuenta el impacto en el rendimiento al seleccionar los campos que se van a registrar; la reducción del rendimiento aumentará a medida que registre más propiedades. Pruebe cómo inciden en el rendimiento las propiedades de registro seleccionadas.

Advertencia

W3CLogger puede registrar potencialmente información de identificación personal (DCP). Tenga en cuenta el riesgo y evite registrar información confidencial. De forma predeterminada, no se registran los campos que podrían contener DCP.

Habilitación de W3CLogger

Habilite W3CLogger con UseW3CLogging, que agrega el middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

De forma predeterminada, W3CLogger registra propiedades comunes como la ruta de acceso, el código de estado, la fecha, la hora y el protocolo. Toda la información sobre un único par de solicitud/respuesta se escribe en la misma línea.

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

Opciones de W3CLogger

Para configurar el middleware W3CLogger, llame a AddW3CLogging en 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 es una enumeración de marca de bits que configura partes específicas de la solicitud y respuesta al registro, y otra información sobre la conexión. LoggingFields incluye como valor predeterminado todos los campos posibles, excepto UserName y Cookie. Para obtener una lista completa de los campos disponibles, consulte W3CLoggingFields.

W3CLogger es un middleware que escribe archivos de registro en el formato estándar W3C. Los registros contienen información sobre las solicitudes y respuestas HTTP. W3CLogger proporciona registros de lo siguiente:

  • Información de solicitud HTTP
  • Propiedades comunes
  • encabezados
  • Información de respuesta HTTP
  • Metadatos sobre el par de solicitud y respuesta (fecha y hora de inicio, tiempo empleado)

W3CLogger es útil en varios escenarios para:

  • Registrar información sobre las solicitudes y respuestas entrantes.
  • Filtrar las partes de la solicitud y la respuesta que se registran.
  • Filtrar los encabezados que se registrarán.

W3CLogger puede reducir el rendimiento de una aplicación. Tenga en cuenta el impacto en el rendimiento al seleccionar los campos que se van a registrar; la reducción del rendimiento aumentará a medida que registre más propiedades. Pruebe cómo inciden en el rendimiento las propiedades de registro seleccionadas.

Advertencia

W3CLogger puede registrar potencialmente información de identificación personal (DCP). Tenga en cuenta el riesgo y evite registrar información confidencial. De forma predeterminada, no se registran los campos que podrían contener DCP.

Habilitación de W3CLogger

Habilite W3CLogger con UseW3CLogging, que agrega el middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

De forma predeterminada, W3CLogger registra propiedades comunes como la ruta de acceso, el código de estado, la fecha, la hora y el protocolo. Toda la información sobre un único par de solicitud/respuesta se escribe en la misma línea.

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

Opciones de W3CLogger

Para configurar el middleware W3CLogger, llame a AddW3CLogging en 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 es una enumeración de marca de bits que configura partes específicas de la solicitud y respuesta al registro, y otra información sobre la conexión. LoggingFields incluye como valor predeterminado todos los campos posibles, excepto UserName y Cookie. Para obtener una lista completa de los campos disponibles, consulte W3CLoggingFields.