C# - Usando o Serilog


 Neste artigo vou apresentar o Serilog uma biblioteca para registro de diagnósticos, e log para arquivos que pode ser usada via console ou em outros locais.

O Serilog é uma biblioteca que você pode usar em aplicações .NET para realizar o logging. Ela é simples, fácil de configurar, tem uma API limpa e é portátil entre plataformas .NET recentes.

Os modelos de mensagem do Serilog são uma DSL simples que estende cadeias de string .NET. Os parâmetros podem ser nomeados e seus valores são serializados como propriedades no evento para uma incrível flexibilidade de pesquisa e classificação.

O Serilog usa uma API C# simples para configurar o log. Quando a configuração externa é desejável, você pode  usar o pacote Serilog.Settings.AppSettings (.NET Framework) ou o pacote Serilog.Settings.Configuration (.NET Core).

Os coletores de eventos de log geralmente registram eventos de log em alguma representação externa, geralmente o console,

A seguir temos um exemplo que usará o pacote de coletor de console, que imprime dados de registro e o pacote de coletor de arquivo, que grava eventos de registro em um conjunto de arquivos de texto com data e hora.

Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File 

Os coletores são configurados usando o objeto de configuração WriteTo.

Criando uma aplicação Console .NET Core e instalando os dois pacotes:

Então se você quer criar apenas um simples log de arquivos basta usar o código abaixo:

using Serilog;
using System;
namespace ConsoleCore_Serilog
{
    class Program
    {
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .WriteTo.Console()
                .CreateLogger();
            Log.Information("Usando Serilog...");
        }
    }
}
 

A seguir temos os principais os alvos de atributos:

Vários coletores podem estar ativos ao mesmo tempo. Para adicionar outros coletores  basta encadear blocos WriteTo:

using Serilog;
using System;
namespace ConsoleCore_Serilog
{
    class Program
    {
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .WriteTo.Console()
                .CreateLogger();
            Log.Information("Usando Serilog...");           
            Log.Logger = new LoggerConfiguration()
            .WriteTo.Console()
            .WriteTo.File("log-.txt", rollingInterval: RollingInterval.Day)
            .CreateLogger();
            Log.Information("Usando mais um Serilog");
            Console.ReadKey();
        }
    }
}

Existem diversos outros recursos que você pode conferir.

No exemplo abaixo temos o registro em um aplicativo de console simples, com eventos enviados para o console, bem como um arquivo de log de rolagem com data e hora.

using Serilog;
using System;

namespace ConsoleCore_Serilog
{
    class Program
    {
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
               .MinimumLevel.Debug()
               .WriteTo.Console()
               .WriteTo.File("logs\\meuLogapp.txt", rollingInterval: RollingInterval.Day)
               .CreateLogger();

            Log.Information("Olá, Serilog !");

            int a = 10, b = 0;
            try
            {
                Log.Debug("Dividindo {A} por {B}", a, b);
                Console.WriteLine(a / b);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Alguma coisa deu errado...");
            }

            Log.CloseAndFlush();
            Console.ReadKey();

        }
    }
}

O resultado obtido é mostrado a seguir:

Assim, o Serilog é um Logging que vale a pena estudar com mais carinho.

Configura a documentação em : https://serilog.net/

E estamos conversados...

"Naquele tempo, respondendo Jesus, disse: Graças te dou, ó Pai, Senhor do céu e da terra, que ocultaste estas coisas aos sábios e entendidos, e as revelaste aos pequeninos."
Mateus 11:25

Referências:


José Carlos Macoratti