0Pricing
C# Academy · Aula

Abstrações de registro, Debug/Trace

Use System.Diagnostics Debug/Trace, adicione ouvintes e crie uma pequena abstração no estilo de ILogger para desacoplar o código do aplicativo dos destinos dos registros.

Abstrações de registro, Debug/Trace é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.

Por que usar registros

Objetivo:

  • Enviar mensagens com Depuração e Rastreamento
  • Adicionar ouvintes para visualizar a saída
  • Introduzir uma pequena abstração de registro
  • Escolher níveis e uma formatação simples

Noções básicas de depuração e rastreamento

Depuração serve para o desenvolvimento; Rastreamento funciona em qualquer compilação. Adicione um ConsoleTraceListener para visualizar as mensagens em aplicativos de console.

using System;
using System.Diagnostics;

// Demo: show Debug/Trace after adding a ConsoleTraceListener
public class Program
{
  public static void Main(string[] args)
  {
    // By default, console apps may not show Debug/Trace. Add a listener.
    Trace.Listeners.Clear();
    Trace.Listeners.Add(new ConsoleTraceListener());

    Debug.WriteLine("Debug: only in debug builds (often)");
    Trace.WriteLine("Trace: in all builds (commonly)");

    Trace.TraceInformation("Info message");
    Trace.TraceWarning("Warning message");
    Trace.TraceError("Error message");
  }
}

Demonstração de TraceSource

TraceSource dá nome a um registrador e filtra por SourceLevels; isso é útil para agrupar mensagens.

using System;
using System.Diagnostics;

// Demo: TraceSource can group logs by name and level.
public class Program
{
  public static void Main(string[] args)
  {
    var src = new TraceSource("Calc", SourceLevels.Information);
    src.Listeners.Clear();
    src.Listeners.Add(new ConsoleTraceListener());

    src.TraceEvent(TraceEventType.Information, 1001, "Starting");
    src.TraceEvent(TraceEventType.Warning, 1002, "Low precision");
    src.TraceEvent(TraceEventType.Error, 1003, "Divide by zero prevented");
    src.Flush();
    src.Close();
  }
}

Pequena demonstração de ILogger

Uma interface desacopla os chamadores do destino; posteriormente, você pode adicionar um destino em arquivo ou remoto sem alterar os locais das chamadas.

using System;

// Minimal ILogger-like abstraction for beginners.
public interface ILogger
{
  void Info(string msg);
  void Warn(string msg);
  void Error(string msg);
}

public class ConsoleLogger : ILogger
{
  private readonly string _name;
  public ConsoleLogger(string name) { _name = name; }

  public void Info(string msg)  { Console.WriteLine("[INFO] "  + _name + " - " + msg); }
  public void Warn(string msg)  { Console.WriteLine("[WARN] "  + _name + " - " + msg); }
  public void Error(string msg) { Console.WriteLine("[ERROR] " + _name + " - " + msg); }
}

public class Program
{
  public static void Main(string[] args)
  {
    ILogger log = new ConsoleLogger("Checkout");
    log.Info("Start");
    log.Warn("Slow network");
    log.Error("Payment failed");
  }
}

Contexto e carimbo de data e hora

Adicione um pequeno contexto (chave=valor) e um carimbo de data e hora UTC para facilitar a correlação ao ler os registros.

using System;

// Add a timestamp and tiny key=value context.
public interface ILogger
{
  void Info(string msg, string contextKey, string contextValue);
}

public class ConsoleLogger : ILogger
{
  private readonly string _name;
  public ConsoleLogger(string name) { _name = name; }

  public void Info(string msg, string key, string value)
  {
    string stamp = DateTime.UtcNow.ToString("u"); // 2009-06-15 13:45:30Z
    Console.WriteLine(stamp + " [INFO] " + _name + " " + key + "=" + value + " :: " + msg);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    ILogger log = new ConsoleLogger("Search");
    log.Info("Query executed", "q", "apple");
    log.Info("Cache miss", "userId", "42");
  }
}

Dicas e boas práticas

Dicas:

  • Escolha alguns níveis (Info/Warn/Error)
  • Adicione pelo menos um ouvinte para Depuração/Rastreamento
  • Mantenha as mensagens curtas; adicione pequenos pares de contexto
  • Não registre segredos

Por que usar uma abstração de registro

Verificação rápida: qual é um dos principais benefícios de usar uma abstração de registro (por exemplo, uma interface ILogger)?

Recapitulação

Recapitulação: use Depuração/Rastreamento com ouvintes para visualizar a saída e encapsule as chamadas atrás de uma pequena interface de registro, para que os destinos possam mudar sem alterar o código de negócio.

Perguntas Frequentes

A aula “Abstrações de registro, Debug/Trace” é grátis?

Sim — o texto completo de “Abstrações de registro, Debug/Trace” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.

O que vou aprender em “Abstrações de registro, Debug/Trace”?

Use System.Diagnostics Debug/Trace, adicione ouvintes e crie uma pequena abstração no estilo de ILogger para desacoplar o código do aplicativo dos destinos dos registros. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 3.

Quanto tempo leva a aula “Abstrações de registro, Debug/Trace”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Abstrações de registro, Debug/Trace
  2. Criação de perfis e rastreamentos básicos (conceitos)
  3. Padrões de proteção e validação
← Voltar para C# Academy