Novidades do .NET 6: HTTP Logging no ASP.NET Core
Nesta semana (dias 25 a 27/Maio, terça a quinta) está acontecendo a edição 2021 do Microsoft Build, a conferência anual da Microsoft para Desenvolvedores. Como não poderia deixar de ser, aconteceram novamente diversos anúncios envolvendo tecnologias que integram a plataforma .NET.
Um dos destaques foi o lançamento do Preview 4 do .NET 6, com detalhes das novidades podendo ser encontrados nas seguintes postagens nos blogs oficiais do .NET e do ASP.NET:
O .NET 6 foi inclusive tema de vários artigos que já produzi anteriormente neste blog. Caso queira saber mais a respeito ou deseje rever algum conteúdo, acesse os links a seguir:
Novidades do .NET 6: suporte a Hot Reload no ASP.NET Core
Novidades do .NET 6: melhorando a experiência na linha de comando com Response Files
Uma das novidades que o Preview 4 traz para o ASP.NET Core é o middleware HTTP Logging: esta nova opção possibilita registrar logs com detalhes de requisições HTTP recebidas e respostas geradas por uma aplicação Web.
Trata-se sem dúvidas de um recurso bastante útil para testes em ambiente de Desenvolvimento, porém existem ressalvas importantes acerca do mesmo em outros cenários:
- A utilização de HTTP Logging tende a diminuir a performance de uma aplicação devido às várias atividades relacionadas à manipulação de logs;
- Dados pessoais de identificação podem estar presente nos logs, devendo-se aqui considerar os riscos envolvendo prováveis informações sensíveis.
Esses são fatos que a própria Microsoft alerta na documentação da funcionalidade:
E como estou abordando aqui novidades do Microsoft Build 2021, aproveito este espaço para um convite…
No dia 02/06/2021 (quarta) às 21:00 — horário de Brasília — teremos mais um evento online e gratuito no canal Coding Night.
Desta vez uma mesa redonda discutindo as novidades e os grandes anúncios do Build 2021. Um bate papo cobrindo tecnologias como .NET, C#, ASP.NET Core, MAUI, Visual Studio, Visual Studio Code, e Microsoft Azure!
Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:
Mas, afinal de contas, como ativamos este novo recurso?
Considerando uma API REST para contagem de acessos/requisições e que produz as seguintes saídas para o console:
Será necessário alterar o arquivo appsettings.json, incluindo em Logging > LogLevel o valor Information para o namespace Microsoft.AspNetCore.HttpLogging (linha 7):
E adicionar uma chamada ao método UseHttpLogging em Configure na classe Startup (linha 30 no próximo exemplo):
Na imagem a seguir podemos observar detalhes dos logs de requisições e respostas, os quais foram gerados durante o processamento de solicitações recebidas pela API de exemplo:
Podemos ir além, controlando o que deverá ou não ser registrado como log. Acionar para isto na classe Startup o método AddHttpLogging em ConfigureServices:
- Através de uma instância da classe HttpLoggingOptions (namespace Microsoft.AspNetCore.HttpLogging) se definem as opções que determinarão a forma como os logs serão produzidos;
- No exemplo a seguir o valor associado à propriedade LoggingFields fará com que apenas os códigos HTTP das respostas sejam logados.
A próxima imagem traz o resultado deste último ajuste:
Já disponibilizei os fontes deste exemplo no GitHub:
https://github.com/renatogroffe/ASPNETCore6-Preview4-HttpLogging-REST_API-ContagemAcessos