DEV Community

Cover image for 📝 Mapeando Logs do .NET com DataDog
Danilo O. Pinheiro, dopme.io
Danilo O. Pinheiro, dopme.io

Posted on

📝 Mapeando Logs do .NET com DataDog

A observabilidade é um dos pilares mais importantes de uma aplicação moderna. No ecossistema .NET, o ILogger se tornou o padrão de logging, proporcionando flexibilidade e integração com diversos providers, incluindo DataDog, uma das plataformas líderes em monitoramento e observabilidade.

Neste artigo, vamos detalhar como configurar logs no .NET utilizando ILogger e integrá-los de forma estruturada ao DataDog.


🔍 Por que utilizar ILogger no .NET?

O ILogger faz parte do namespace Microsoft.Extensions.Logging e oferece uma abstração para logs:

  • ✅ Suporte a múltiplos provedores (Console, Seq, Serilog, DataDog, etc.).
  • ✅ Log estruturado com parâmetros.
  • ✅ Níveis de log configuráveis (Trace, Debug, Information, Warning, Error, Critical).
  • ✅ Fácil integração em APIs, Workers, Microservices e Blazor.

⚙️ Estrutura Básica de Logs no .NET

Exemplo simples de injeção do ILogger em um controller:

using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; namespace MyApp.Controllers { [ApiController] [Route("[controller]")] public class OrdersController : ControllerBase { private readonly ILogger<OrdersController> _logger; public OrdersController(ILogger<OrdersController> logger) { _logger = logger; } [HttpGet("{id}")] public IActionResult GetOrder(int id) { _logger.LogInformation("Fetching order with ID {OrderId}", id); if (id <= 0) { _logger.LogWarning("Invalid order ID: {OrderId}", id); return BadRequest("Invalid ID"); } return Ok(new { Id = id, Product = "Laptop" }); } } } 
Enter fullscreen mode Exit fullscreen mode

Aqui utilizamos logs estruturados ({OrderId}) que o DataDog consegue mapear como atributos pesquisáveis.


🐶 Integração com DataDog

O DataDog oferece um Agent que coleta logs da aplicação e os envia para a plataforma.

3.1. Instalação do DataDog Agent

No servidor ou container Docker:

DD_API_KEY=your_api_key_here DD_SITE="datadoghq.com" \ bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" 
Enter fullscreen mode Exit fullscreen mode

Configuração no .NET

Uma das formas mais comuns de integração é utilizar o Serilog com DataDog sink.

Pacotes necessários

dotnet add package Serilog dotnet add package Serilog.Sinks.Datadog.Logs dotnet add package Serilog.Extensions.Logging 
Enter fullscreen mode Exit fullscreen mode

Configuração no Program.cs

using Microsoft.Extensions.Logging; using Serilog; using Serilog.Sinks.Datadog.Logs; var logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.DatadogLogs( apiKey: "YOUR_DATADOG_API_KEY", source: "my-dotnet-app", service: "orders-api", host: Environment.MachineName, configuration: new DatadogConfiguration { Url = "https://http-intake.logs.datadoghq.com" }) .CreateLogger(); var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddSerilog(logger); var app = builder.Build(); app.MapGet("/", () => "Hello from .NET with DataDog!"); app.Run(); 
Enter fullscreen mode Exit fullscreen mode

📊 Estrutura de Logs no DataDog

Uma vez configurado, os logs no DataDog terão os seguintes campos estruturados:

  • @timestamp → Data/Hora
  • level → Nível do log (Information, Error, etc.)
  • message → Mensagem formatada
  • service → Nome do serviço (definido no sink)
  • source → Origem do log (ex.: my-dotnet-app)
  • OrderId → Campos personalizados dos logs estruturados

Isso facilita dashboards, alertas e correlação com traces do OpenTelemetry e métricas de performance.


🛠️ Boas Práticas

  • 🔹 Use logs estruturados em vez de strings concatenadas.
  • 🔹 Utilize Correlation IDs para rastrear requisições entre serviços.
  • 🔹 Configure níveis de log diferentes por ambiente (ex.: Debug em dev, Warning em produção).
  • 🔹 Combine logs + métricas + traces no DataDog para observabilidade completa.

✅ Conclusão

O ILogger oferece uma abstração poderosa para logging no .NET, e sua integração com o DataDog permite centralizar logs, detectar anomalias e correlacionar eventos em sistemas distribuídos.
Ao aplicar logs estruturados e boas práticas, você eleva o nível de observabilidade da sua aplicação moderna em .NET.


🤝 Conecte-se Comigo

Se você trabalha com .NET moderno e quer dominar arquitetura, observabilidade, DevOps ou interoperabilidade, vamos conversar:

💼 LinkedIn
✍️ Medium
📬 contato@dopme.io


Para conhecê-lo, e o poder da sua ressurreição, e à comunicação de suas aflições, sendo feito conforme à sua morte;
Filipenses 3:10

Top comments (0)