Fala Galera,
Hoje esterei falando sobre Logs. Logar a execução de um aplicação é uma parte importante dentro do processo de desenvolvimento de software porém criar um Log que realmente nos ajude, esse sim é complicado. Quem nunca pegou um Log de 1 GB ou mais tendo que achar uma informação para tentar desvendar um erro. Realmente quando estamos neste cenário é porque o sistema saiu do ar ou tem um cliente muito aborrecido querendo uma rápida solução.
Quando criamos um Log, sempre achamos que o que escrevemos nele vai nos ajudar, mas nem sempre é assim. O principal problema de ser criar um Log é escrever as informações necessárias e claro pesquisar essas informações dentro de um arquivo de Log que tende a ficar grande a medida que sua aplicação é usada.
Assim como o processo de desenvolvimento de software muda e muda muito rápido eis que surge a criação de Log Estruturados e Indexados. Esse tipo de Log é fácil de ser pesquisado e ainda podemos criar qualquer estrutura indexada dentro dele como por exemplo um JSON.
Para esse tipo Log Estruturado existe a solução chamada Seq, que é um solução Open Source para gerenciamento desse tipo de Log. Ele coleta os dados do Log sobre uma rica API REST e nele podemos fazer pesquisas como se fizermos uma simples consulta SQL.
O Seq pode ser integrado com vários tipos de Framework de Log, neste exemplo estarei usando o Serilog.
Instalando o Seq Server
Para utilizar o Seq devemos fazer download do instalador do através deste link. A instalação do Seq é bem simples e pode ser feita através do Wizard dele. Ele irá coletar todas as informações necessárias e adicionar o serviço do Seq Server no Windows.
Ao final da instalação você deve ser capaz de visualizar uma tela igual a da imagem abaixo:
Estamos com Seq pronto para ação. Vamos criar nossa aplicação de exemplo.
Utilizando o Seq com Serilog
Com Seq instalado devemos agora escrever nossas informações de Log utilizando o Framework Serilog.
Crie um Console Application assim podemos demonstrar de forma rápida o seu uso.
Com o Console Application criado vamos adicionar os pacotes necessários para escrever no Seq.
Após adicionar o Serilog, vamos adicionar o Client do Serilog para o Seq conforme imagem abaixo:
Agora com todos os pacotes instalados, vamos fazer a configuração do Serilog
class Program { static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .WriteTo.Seq("http://localhost:5341") .CreateLogger(); } }
No código acima, estamos configurando o Serilog para fazer escritas no Seq e ainda estamos criando a referencia para o Log.
Agora estamos prontos para fazer as escritas no Seq conforme código abaixo:
static void Main(string[] args) { ILogger log = new LoggerConfiguration() .WriteTo.Seq("http://localhost:5341") .CreateLogger(); for (int i = 0; i < 1500; i++) { var request = new { TransactionId = Guid.NewGuid(), Message = "OK", Response = "Usuário salvo com sucesso" }; log.Information("New Request TransactionId:{TransactionId}: {@request}", request.TransactionId, request); } Console.Read(); }
Ao executar o código, ele estará gravando no Seq a informação estruturada assim podemos fazer buscas através de sua interface conforme figura abaixo
Neste post apresentei o básico do Seq com Serilog, existem uma infinidade de possibilidades que podemos fazer com os dois. Como vimos criar Logs são fáceis o mais difícil é gravar a informação que realmente vai ter ajudar em um determinado problema.
Para saber mais sobre o Seq, clique aqui
Para saber mais sobre o Serilog, clique aqui
O código fonte deste exemplo se encontra no meu Github através deste link
Abs e até a próxima.