ASP.NET Core + Entity Framework: ativando o logging de instruções SQL
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:
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: