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" }); } } }
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)"
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
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();
📊 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)