ASP.NET Core + Serilog: implementando Logs com SQL Server e Azure Table Storage
Em um post anterior abordei a implementação de logs em ASP.NET Core utilizando para isto a biblioteca Serilog e uma base do MongoDB para armazenamento:
ASP.NET Core: implementando Logs com Serilog + MongoDB
O exemplo demonstrado neste primeiro artigo já está inclusive no GitHub:
ASP.NET Core 3.1 + REST API + Serilog + MongoDB
Neste novo post trago variações deste exemplo, empregando desta vez uma base do SQL Server (uma tecnologias de banco de dados relacionais mais populares) e o Azure Table Storage (uma opção de baixo custo e extremamente flexível na nuvem Microsoft) como meios de armazenamento. Em breve devo seguir com novas publicações neste blog, considerando a integração do Serilog com alternativas como Elasticsearch e Application Insights.
E aproveito este espaço para um convite…
Dia 16/07/2020 (quinta) a partir das 21:00 — horário de Brasília — teremos mais uma live no Canal .NET. Desta vez receberemos o MVP Dirceu Resende, em uma apresentação cobrindo os diversos tipos de bancos de dados relacionais que podemos utilizar no Microsoft Azure, custos, cenários de uso, migração: Azure SQL Database (provisionado e Serverless), Azure Managed Instance, MySQL/MariaDB, PostgreSQL e também servidores em máquinas virtuais!
Segue o link para inscrições, a transmissão será via YouTube:
https://bit.ly/live-bancos-sql-azure
Logs com Azure Table Storage
Procurando ser o mais direto possível, abordarei nesta e na próxima seção apenas as mudanças realizadas em relação à versão que faz uso do MongoDB. Para o caso específico do Azure Table Storage, deveremos adicionar o package Serilog.Sinks.AzureTableStorage ao projeto:
Na classe Program foi ativado o uso do Azure Table Storage, com a gravação dos logs acontecendo em uma tabela chamada LogAPIContagem (linha 38). Importante destacar que esta tabela (LogAPIContagem) será criada caso ainda não exista tal objeto na Storage Account utilizada:
A imagem a seguir traz o resultado da execução da aplicação de testes (visualização obtida a partir do Azure Storage Explorer), com os dados registrados na tabela LogAPIContagem:
O código deste exemplo foi disponibilizado no GitHub:
Logs com SQL Server
A fim de possibilitar o uso de uma tabela do SQL Server em conjunto com o Serilog será necessário adicionar o package Serilog.Sinks.AzureTableStorage ao projeto ASP.NET Core:
Na classe Program foi ativada a utilização do SQL Server:
- Ao invocar o método MSSqlServer (linha 39) estão sendo informadas a string de conexão ao SQL Server e uma instância do tipo SinkOptions (namespace Serilog.Sinks.MSSqlServer.Sinks.MSSqlServer.Options);
- Para o objeto do tipo SinkOptions (linha 40) foram configuradas as propriedades TableName (tabela que receberá os registros de log) e AutoCreateSqlTable (flag que quando true fará com que a tabela de logs seja criada automaticamente, caso ainda não exista).
Na próxima imagem podemos observar a partir da ferramenta Azure Data Studio registros de log gerados na tabela LogAPIContagem:
Este segundo projeto também já se encontra no GitHub: