Registro em aplicações C#: melhores práticas para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que o registro (logging) é importante?

\n\n

Imagine que sua aplicação em C# está em produção. De repente, os usuários relatam um erro, mas você não consegue entender o que deu errado. Sem logs, você é como um piloto sem instrumentos. O registro (logging) é o processo de gravar informações sobre o funcionamento da aplicação: erros, avisos, mensagens de depuração e eventos importantes.

\n\n

Neste artigo, abordaremos as melhores práticas de registro para desenvolvedores iniciantes em C# (.NET). Você aprenderá como configurar o registro, quais ferramentas usar e como evitar erros comuns.

\n\n

1. Escolha da ferramenta de registro em C#

\n\n

No ecossistema .NET, existem várias bibliotecas populares para registro. Para iniciantes, recomendamos três opções principais:

\n\n

1.1. ILogger integrado (Microsoft.Extensions.Logging)

\n\n

A partir do .NET Core, a Microsoft fornece a interface integrada ILogger. Ela é simples de usar e não requer a instalação de bibliotecas de terceiros.

\n\n
using Microsoft.Extensions.Logging;\n\npublic class OrderService\n{\n    private readonly ILogger<OrderService> _logger;\n\n    public OrderService(ILogger<OrderService> logger)\n    {\n        _logger = logger;\n    }\n\n    public void ProcessOrder(int orderId)\n    {\n        _logger.LogInformation("Processando pedido {OrderId}", orderId);\n        // Lógica de processamento\n    }\n}
\n\n

1.2. Serilog — flexível e poderoso

\n\n

Serilog é uma das bibliotecas mais populares. Ele suporta registro estruturado, o que facilita a análise de dados. Instalação via NuGet: Install-Package Serilog.AspNetCore

\n\n
using Serilog;\n\npublic class Program\n{\n    public static void Main(string[] args)\n    {\n        Log.Logger = new LoggerConfiguration()\n            .MinimumLevel.Debug()\n            .WriteTo.Console()\n            .WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day)\n            .CreateLogger();\n\n        try\n        {\n            Log.Information("Aplicação iniciada");\n            CreateHostBuilder(args).Build().Run();\n        }\n        catch (Exception ex)\n        {\n            Log.Fatal(ex, "Aplicação encerrada com erro");\n        }\n        finally\n        {\n            Log.CloseAndFlush();\n        }\n    }\n}
\n\n

1.3. NLog — escolha clássica

\n\n

NLog é outra biblioteca madura com amplas possibilidades de configuração através de arquivos de configuração.

\n\n
// Configuração via appsettings.json\n{\n  "NLog": {\n    "targets": {\n      "console": {\n        "type": "Console",\n        "layout": "${longdate}|${level:uppercase=true}|${message}"\n      },\n      "file": {\n        "type": "File",\n        "fileName": "logs/app.log",\n        "layout": "${longdate}|${level:uppercase=true}|${message}"\n      }\n    },\n    "rules": [\n      { "logger": "*", "minLevel": "Info", "writeTo": "console,file" }\n    ]\n  }\n}
\n\n

2. Níveis de registro: quando usar cada um

\n\n

O uso correto dos níveis de registro é a base de uma boa prática. Em C# (.NET), os seguintes níveis são definidos (do mais crítico ao menos crítico):

\n\n
    \n
  • Trace (0) — informações de depuração extremamente detalhadas. Usado apenas para diagnóstico profundo.
  • \n
  • Debug (1) — mensagens de depuração para desenvolvedores. Ativado no ambiente de desenvolvimento, mas desativado em produção.
  • \n
  • Information (2) — mensagens informativas gerais sobre o funcionamento da aplicação (inicialização, operações bem-sucedidas).
  • \n
  • Warning (3) — avisos sobre problemas potenciais que não são erros (por exemplo, tempo de execução excedido).
  • \n
  • Error (4) — erros que exigem atenção, mas não são fatais para a aplicação.
  • \n
  • Critical (5) — erros críticos, após os quais a aplicação

Blogs

Book Recommendations