ASP.NET Core + Serilog: implementando Logs com SQL Server e Azure Table Storage

Renato Groffe
3 min readJul 13, 2020

--

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:

ASP.NET Core 3.1 + REST API + Serilog + Azure Table Storage

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:

ASP.NET Core 3.1 + REST API + Serilog + SQL Server

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

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

No responses yet