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)