ASP.NET Core + Entity Framework: ativando o logging de instruções SQL

Renato Groffe
3 min readOct 25, 2021

--

Ao implementar logging em aplicações ASP.NET Core partimos sempre de recursos definidos no namespace Microsoft.Extensions.Logging, com uma série de complementos e extensões que podem ser adicionados a nossos projetos visando uma maior observabilidade das diferentes operações realizadas. Bons exemplos de integração com esse mecanismo nativo de logging estão na biblioteca Serilog e no Application Insights (este último um serviço que integra o Microsoft Azure).

Muitas funcionalidades para geração de logs podem inclusive ser ativadas via ajustes nos arquivos appsettings.json ou appsettings.Development.json, dispensando assim modificações a nível de código no arquivo Program.cs ou na classe Startup. Ao utilizarmos o Entity Framework Core, por exemplo, podemos nos valer de sua integração com o logging do ASP.NET Core para exibir as interações com um banco de dados e chegar até mesmo ao nível de exibir os comandos SQL gerados nestes processos.

Foi justamente o que mostrei em uma live recente no Canal .NET e cujo conteúdo pode ser assistido gratuitamente no YouTube:

O exemplo que demonstrei já foi disponibilizado no GitHub:

.NET 5 + ASP.NET Core + Entity Framework Core (Logging) + SQL Server + Azure Application Insights + Regiões e Estados do Brasil

Ao ativar com o valor Information a geração de logs para a categoria Microsoft.EntityFrameworkCore no arquivo appsettings.Development.json:

Teremos um resultado similar ao apresentado na tela a seguir:

Para uma instrução envolvendo o uso de LINQ com uma instância de RegioesContext no método GetEstadosPorRegiao (classe RegioesController):

Podemos mesmo ir além, ativando a exibição de dados sensíveis em logs através de uma chamada ao método EnableSensitiveDataLogging (linha 48) durante a configuração da classe de contexto no tipo Startup:

Parâmetros passados a esta query baseada em LINQ serão agora exibidos no logging (um alerta deve ser feito aqui, quanto à privacidade de dados e à presença de informações sensíveis em logs — algo a ser evitado em ambientes de produção):

Subcategorias como Microsoft.EntityFrameworkCore.Database.Command e Microsoft.EntityFrameworkCore.Database.Transaction podem ser empregadas para controlar o logging de comandos SQL e transações, por exemplo. Maiores informações sobre como customizar os logs emitidos pelo Entity Framework Core com podem ser encontradas neste link.

E concluo este artigo um convite…

Dia 03/11 (quarta) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Será uma live abordando dicas e truques para simplificar o desenvolvimento de soluções baseadas em mensageria com .NET.

Ao longo da apresentação serão cobertos diversos exemplos envolvendo tecnologias como .NET, Kafka, RabbitMQ, Azure Functions, Azure Event Grid e vários outros serviços que fazem parte da nuvem Microsoft.

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-mensageria-dotnet

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker