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)