Partilhar via


W3CLogger no ASP.NET Core

Note

Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.

Warning

Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 10 deste artigo.

W3CLogger é um middleware que grava arquivos de log no formato padrão W3C. Os logs contêm informações sobre solicitações HTTP e respostas HTTP. O W3CLogger fornece logs de:

  • Informações de solicitação HTTP
  • Propriedades comuns
  • Headers
  • Informações de resposta HTTP
  • Metadados sobre o par pedido/resposta (data/hora de início, tempo decorrido)

O W3CLogger é valioso em vários cenários para:

  • Registre informações sobre solicitações e respostas recebidas.
  • Filtre quais partes da solicitação e da resposta são registradas.
  • Filtrar os cabeçalhos a registar.

O W3CLogger pode reduzir o desempenho de uma aplicação. Considere o impacto no desempenho ao selecionar campos para registro em log - a redução de desempenho aumentará à medida que você registrar mais propriedades. Teste o impacto das propriedades de logging selecionadas no desempenho.

Warning

O W3CLogger pode potencialmente registar informações de identificação pessoal (PII). Considere o risco e evite registrar informações confidenciais. Por padrão, os campos que podem conter PII não são registrados.

Ativar o W3CLogger

Habilite o W3CLogger com UseW3CLogging, que adiciona o middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Por padrão, o W3CLogger registra propriedades comuns, como caminho, código de status, data, hora e protocolo. Todas as informações sobre um único par pedido/resposta são registadas na mesma linha.

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

Opções W3CLogger

Para configurar o middleware W3CLogger, chame AddW3CLogging em 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 é um enumerador de sinalizador de bits que configura quais partes específicas da solicitação e resposta são registadas, além de outras informações sobre a conexão. LoggingFields padrão para incluir todos os campos possíveis, exceto UserName e Cookie. Para obter uma lista completa dos campos disponíveis, consulte W3CLoggingFields.

W3CLogger é um middleware que grava arquivos de log no formato padrão W3C. Os logs contêm informações sobre solicitações HTTP e respostas HTTP. O W3CLogger fornece logs de:

  • Informações de solicitação HTTP
  • Propriedades comuns
  • Headers
  • Informações de resposta HTTP
  • Metadados sobre o par pedido/resposta (data/hora de início, tempo decorrido)

O W3CLogger é valioso em vários cenários para:

  • Registre informações sobre solicitações e respostas recebidas.
  • Filtre quais partes da solicitação e da resposta são registradas.
  • Filtrar os cabeçalhos a registar.

O W3CLogger pode reduzir o desempenho de uma aplicação. Considere o impacto no desempenho ao selecionar campos para registro em log - a redução de desempenho aumentará à medida que você registrar mais propriedades. Teste o impacto das propriedades de logging selecionadas no desempenho.

Warning

O W3CLogger pode potencialmente registar informações de identificação pessoal (PII). Considere o risco e evite registrar informações confidenciais. Por padrão, os campos que podem conter PII não são registrados.

Ativar o W3CLogger

Habilite o W3CLogger com UseW3CLogging, que adiciona o middleware W3CLogger:

var app = builder.Build();

app.UseW3CLogging();

app.UseRouting();

Por padrão, o W3CLogger registra propriedades comuns, como caminho, código de status, data, hora e protocolo. Todas as informações sobre um único par pedido/resposta são registadas na mesma linha.

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

Opções W3CLogger

Para configurar o middleware W3CLogger, chame AddW3CLogging em 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 é um enumerador de sinalizador de bits que configura quais partes específicas da solicitação e resposta são registadas, além de outras informações sobre a conexão. LoggingFields padrão para incluir todos os campos possíveis, exceto UserName e Cookie. Para obter uma lista completa dos campos disponíveis, consulte W3CLoggingFields.