VAGAS DE EMPREGO

balta.io balta.io
  • Cursos
  • Carreiras
  • Para sua Empresa
  • Livros
    • Background Services
    • Blazor com .NET 8
    • Segurança em APIs
    • Futuro do C# 12
    • Nullable Types
    • Clean Code
  • Blog

Seja Premium
balta.io

  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Livros
    • Background Services
    • Blazor com .NET 8
    • Segurança em APIs
    • Futuro do C# 12
    • Nullable Types
    • Clean Code
  • Blog
  • Player
Seja Premium

Entre ou Cadastre-se

  • Home
  • Artigos
  • Logs no ASP.NET com Serilog


👉 Temos uma versão mais atualizada deste artigo no nosso novo Blog

Logs no ASP.NET com Serilog

Neste artigo vamos aprender como podemos utilizar o pacote Serilog para logar informações das nossas aplicações.

O que é o Serilog?

O Serilog é uma biblioteca para log de informações de qualquer aplicação .NET, que trabalha com Sinks como base.

O Serilog em sí, é uma estrutura que nos permite salvar quaisquer tipos de informação, de forma organizada, durante a execução da aplicação.

Sinks

Quando trabalhamos com logs, os gostos e necessidades variam muito. Cada empresa ou time, opta por concentrar seus logs em um local diferente e o Serilog auxilia nisso.

O que acontece é que o Serilog possui apenas a implementação básica dos logs e os Sinks fazem todo o trabalho sujo aqui.

Desta forma, caso queira que o Serilog escreva seus logs em um arquivo, basta utilizar o Sink.File. O mesmo acontece para E-mails com Sink.Email e até para o Discord com Sink.Discord.

Você também pode criar seu próprio Sink caso queira armazenar os logs em algum local específico da sua empresa cujo os Sinks padrões não te atenda.

Setup

O primeiro passo para utilizar o Serilog é fazer a instalação do seu pacote principal, cujo todos os Sinks derivarão. Isto pode ser feito executando o comando abaixo.

dotnet add package Serilog.AspNetCore

Para finalizar, precisamos adicionar o UseSerilog no Host da aplicação, conforme mostrado abaixo.

builder.Host.UseSerilog(...);

É importante notar, que neste caso deixamos as configurações vazias por enquanto (...), o que causará um erro se tentarmos executar o programa.

Posteriormente veremos como configurar os Sinks da maneira correta, para diferentes tipos de log.

Log no Console

A primeira forma e mais simples de termos quaisquer informações durante a execução das nossas aplicações é visualizar o Console (Terminal onde a aplicação está sendo executada).

Para logar as informações no Console utilizando Serilog, precisamos primeiro configurar o método WriteTo, apontando para Console.

builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console(LogEventLevel.Debug)

Note que neste exemplo utilizamos o LogEventLevel.Debug o que significa que apenas mensagens de Debug serão logadas no Console.

Neste ponto, todas as mensagens de Debug, incluindo as do próprio .NET, serão logadas. O mesmo vale para Warnings e Errors, é só mudar o LogEventLevel para tê-las logadas.

Mensagens customizadas

Caso queira disparar alguma mensagem customizada durante a execução da aplicação, podemos utilizar o Log do namespace Serilog, informando o tipo da mensagem e texto que desejamos logar.

using Serilog;

Log.Error("Mensagem de erro");
Log.Information("Mensagem de informação");
Log.Fatal("Erro fatal");
Log.Debug("Mensagem de Debug");
Log.Warning("Mensagem de Warning");

Log no E-mail

Seguindo a mesma linha de raciocínio anterior, podemos ter as mensagens logadas via E-mail. Neste caso temos que ter um cuidado especial para não encher a caixa de E-mails de mensagens.

O Serilog possui um Sink que faz este trabalho, e podemos instalá-lo através do pacote como demonstrado abaixo.

dotnet add package Serilog.Sinks.Email

Feito isto, tudo que precisamos fazer é configurar o Sink no Program.cs como fizemos anteriormente com o Console.

builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console(LogEventLevel.Debug)
    .WriteTo.Email(new EmailConnectionInfo
    {
        Port = 587,
        EmailSubject = "TESTE",
        EnableSsl = true,
        FromEmail = "hello@balta.io",
        MailServer = "smtp.sendgrid.net",
        NetworkCredentials = new NetworkCredential("apikey", "pwd"),
        ToEmail = "hello@balta.io",
        IsBodyHtml = true
    }));

Log no arquivo

Por fim temos o Serilog.Sinks.File que nos permite logar mensagens em um arquivo (Texto neste caso). Este método particularmente é um dos que mais utilizo.

builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console(LogEventLevel.Debug)
    .WriteTo.File("log.txt",
        LogEventLevel.Warning,
        rollingInterval: RollingInterval.Day));

Outros Sinks

Algo que gosto no Serilog é o ótimo suporte por parte da comunidade. É quase impossível precisar de um Sink que ainda não existe, confira a lista completa aqui.

Aqui no balta por exemplo, utilizamos o Sink do Discord, já que temos nossas informações todas concentradas lá. É muito legal conseguir ver o que está acontecendo no site e ainda poder agir de forma pro-ativa.

Conclusão

Escrever logs de forma simples e fácil, com extesões e suporte para múltiplos formatos e plataformas no .NET é com o Serilog. Ele é um dos meus pacotes preferidos!

Populares

Priority Queue

Priority Queue ou fila prioritária é um tipo de lista inclusa no C# 10 que permite que seus itens...


Implicit Operators no C#

Implicit Operators permitem adicionar comportamentos de conversão a objetos Built In ou complexos...


ASP.NET 5 – Autenticação e Autorização com Bearer e JWT

Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...


Clean Code - Guia e Exemplos

Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...


Git e GitHub - Instalação, Configuração e Primeiros Passos

Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...


Compartilhe este artigo



Conheça o autor

André Baltieri

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.





3.133

Aulas disponíveis

292

horas de conteúdo

76.461

Alunos matriculados

53.012

Certificados emitidos





Comece de graça agora mesmo!

Temos mais de 21 cursos totalmente de graça e todos com certificado de conclusão.

Começar


Prefere algo mais Premium?

Conheça nossos planos



Premium anual

Compra única, parcelada em até
12x no cartão de crédito


12x R$

99

,79

=R$ 1.197,44
  • 1 ano de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 67 cursos disponíveis
  • 10 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade



Precisa de ajuda?

Dúvidas frequentes



  • Posso começar de graça?

    Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.

  • Vou ter que pagar algo?

    Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com certificado de conclusão, você não paga nada por eles.

    Porém, caso queira algo mais Premium , você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.

  • Por onde devo começar?

    Siga SEMPRE as nossas Carreiras , elas vão te orientar em todos os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu aprendizado.
    Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.

    • Backend
    • Frontend
    • Mobile

  • Os cursos ensinam tudo que preciso?

    Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.

  • O que eu devo estudar?

    Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe o básico?"

    Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus objetivos primeiro.
    Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta para tomar esta decisão seria:

    • Já sei o básico
    • O Framework/Tecnologia tem mercado onde eu estou (região)
    • O Framework/Tecnologia é utilizado em uma empresa onde quero atual
    • O Framework/Tecnologia resolve meu problema
    • Eu gosto de utilizar o Framework/Tecnologia

  • Estou pronto para estudar no balta.io?

    Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!

    Começar de graça

Ainda tem dúvidas?





Assine nosso Newsletter

Receba em primeira mão todas as nossas novidades.

Cadastrar


balta.io

Sobre

  • Como funciona?
  • Seja Premium
  • Agenda
  • Blog
  • Todos os cursos

Cursos

  • Frontend
  • Backend
  • Mobile
  • Fullstack

Suporte

  • Termos de uso
  • Privacidade
  • Cancelamento
  • Central de ajuda

Redes Sociais

  • Telegram
  • Facebook
  • Instagram
  • YouTube
  • Twitch
  • LinkedIn
  • Discord