Pular para o conteúdo
.NETProvedores e configuração
Módulo 02Fundamentos de Aplicação

Provedores e configuração

iniciante 22 min de leitura·Atualizado · .NET 9
Resumo

Provedores de log definem para onde as mensagens vão (console, arquivo, sistemas externos). Os níveis são filtrados por configuração no appsettings.json. Bibliotecas como Serilog ampliam os destinos e formatos.

1. Objetivos de Aprendizagem#

  • Configurar níveis de log por categoria via appsettings.json.
  • Conhecer provedores nativos e de terceiros.
  • Entender o papel do Serilog e do logging estruturado em produção.

2. Pré-requisitos#

  • Log estruturado (tópico 14.2).

3. Conceito#

  • Provedores: destinos das mensagens. Nativos incluem Console e Debug; provedores externos gravam em arquivos, bancos ou plataformas de observabilidade.
  • Filtro por configuração: a seção Logging do appsettings.json define o nível mínimo por categoria — por exemplo, silenciar o ruído do framework e manter os logs da sua aplicação.

O porquê: separar "o que logar" (no código) de "para onde e em que nível" (na configuração) permite ajustar sem recompilar. Serilog é a escolha popular para logging estruturado rico (sinks para arquivo, Seq, Elastic, etc.).

4. Mão na Massa#

4.1. Setup#

Shell
dotnet new console -n Catalog.LogConfig
cd Catalog.LogConfig
dotnet add package Microsoft.Extensions.Hosting

4.2. Implementação Passo a Passo#

  1. Filtro de níveis no appsettings.json:
JSON
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Catalog": "Debug"
    }
  }
}
  • Default — nível base.
  • Microsoft.AspNetCore — reduz o ruído do framework a Warning.
  • Catalog — logs do seu código descem a Debug.
  1. O host já lê essa seção automaticamente:
C#
using Microsoft.Extensions.Hosting;

var builder = Host.CreateApplicationBuilder(args);
// builder.Logging já configurado a partir de appsettings.json
var host = builder.Build();
  1. Trocar para Serilog (visão geral):
Shell
dotnet add package Serilog.Extensions.Hosting
dotnet add package Serilog.Sinks.Console

Configurar Serilog substitui os provedores nativos, mantendo a mesma API ILogger<T> no seu código — ou seja, você não muda seus logs, só o destino/formatação.

4.3. Executando#

Shell
dotnet run

5. Exemplo Completo#

Definir Catalog: Debug e Microsoft.AspNetCore: Warning no appsettings.json faz seus logs aparecerem em detalhe enquanto silencia o ruído do framework — tudo sem tocar no código.

6. Boas Práticas e Armadilhas#

FaçaEvite
Filtrar níveis por categoria na configuraçãoDeixar o framework logar tudo em Information
Programar contra ILogger (independe do provedor)Acoplar o código a uma biblioteca de log específica
Serilog/estruturado para produçãoDepender só do console em produção sem retenção
Nota

como seu código usa a abstração ILogger<T>, trocar o provedor (nativo → Serilog) não exige alterar as chamadas de log — só a configuração de inicialização.

7. Segurança e Produção#

  • Em produção, use um provedor com retenção e busca (arquivo rotacionado ou plataforma de observabilidade). Console puro se perde ao reiniciar o processo.
  • Configure a retenção conforme políticas de compliance (LGPD) e nunca registre segredos/PII.

8. Exercícios#

  • Fácil: ajuste o nível Default no appsettings.json e observe o efeito.
  • Médio: reduza o ruído de uma categoria do framework para Warning.
  • Desafio: adicione Serilog com sink de console e confirme que seus logs ILogger<T> continuam funcionando sem alteração no código.

9. Resumo#

Provedores definem destinos; a seção Logging filtra níveis por categoria via configuração. Programar contra ILogger<T> permite trocar o provedor (ex.: Serilog) sem mudar os logs.

10. Próximos Passos#

Último módulo dos fundamentos: garantir qualidade com testes automatizados.

11. Referências#

14-03 — Provedores e configuração | Curso ASP.NET Core