W3CLogger no ASP.NET Core
Observação
Esta não é a versão mais recente deste artigo. Para informações sobre a versão vigente, confira a Versão do .NET 8 deste artigo.
Aviso
Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, confira .NET e a Política de Suporte do .NET Core. Para informações sobre a versão vigente, confira a Versão do .NET 8 deste artigo.
Importante
Essas informações relacionam-se ao produto de pré-lançamento, que poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.
Para informações sobre a versão vigente, confira a Versão do .NET 8 deste artigo.
O 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
- Cabeçalhos
- Informações de resposta HTTP
- Metadados sobre o par de solicitação/resposta (data/hora de início, tempo gasto)
O W3CLogger é útil em vários cenários para:
- Registrar informações sobre solicitações e respostas de entrada.
- Filtrar quais partes da solicitação e da resposta são registradas.
- Filtrar quais cabeçalhos registrar.
O W3CLogger pode reduzir o desempenho de um aplicativo. Considere o impacto sobre o desempenho ao selecionar campos para registrar – a redução de desempenho aumentará à medida que você registrar mais propriedades. Teste o impacto sobre o desempenho das propriedades de log selecionadas.
Aviso
O W3CLogger pode registrar PII (informações de identificação pessoal). Considere o risco e evite registrar informações confidenciais. Por padrão, campos que podem conter PII não são registrados.
Habilitar 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 par de solicitação/resposta são gravadas 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 do W3CLogger
Para configurar o middleware do 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 é uma enumeração de sinalizador de bit que configura partes específicas da solicitação e resposta ao log e outras informações sobre a conexão. Por padrão, LoggingFields
inclui todos os campos possíveis, exceto UserName
e Cookie
. Para obter uma lista completa dos campos disponíveis, consulte W3CLoggingFields.
O 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
- Cabeçalhos
- Informações de resposta HTTP
- Metadados sobre o par de solicitação/resposta (data/hora de início, tempo gasto)
O W3CLogger é útil em vários cenários para:
- Registrar informações sobre solicitações e respostas de entrada.
- Filtrar quais partes da solicitação e da resposta são registradas.
- Filtrar quais cabeçalhos registrar.
O W3CLogger pode reduzir o desempenho de um aplicativo. Considere o impacto sobre o desempenho ao selecionar campos para registrar – a redução de desempenho aumentará à medida que você registrar mais propriedades. Teste o impacto sobre o desempenho das propriedades de log selecionadas.
Aviso
O W3CLogger pode registrar PII (informações de identificação pessoal). Considere o risco e evite registrar informações confidenciais. Por padrão, campos que podem conter PII não são registrados.
Habilitar 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 par de solicitação/resposta são gravadas 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 do W3CLogger
Para configurar o middleware do 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 é uma enumeração de sinalizador de bit que configura partes específicas da solicitação e resposta ao log e outras informações sobre a conexão. Por padrão, LoggingFields
inclui todos os campos possíveis, exceto UserName
e Cookie
. Para obter uma lista completa dos campos disponíveis, consulte W3CLoggingFields.