Logging & Observability
ILogger, Structured Logging, Serilog, OpenTelemetry, Distributed Tracing e boas praticas de observabilidade
Os Tres Pilares da Observabilidade
Observabilidade e a capacidade de entender o estado interno de um sistema a partir de suas saidas externas. Os tres pilares sao Logs, Metricas e Traces β juntos, fornecem visibilidade completa sobre o comportamento da aplicacao.
| Pilar | O que captura | Exemplo |
|---|---|---|
| Logs | Eventos discretos com contexto (timestamp, nivel, mensagem, propriedades) | Order 12345 created for customer ABC |
| Metricas | Valores numericos agregados ao longo do tempo (contadores, histogramas, gauges) | http_requests_total, request_duration_seconds |
| Traces | Caminho completo de uma requisicao atraves de multiplos servicos | TraceId liga API Gateway β Order Service β DB |
ILogger no .NET
O .NET fornece a abstracao ILogger que desacopla o codigo da implementacao de logging. Voce injeta ILogger<T> e o framework resolve o provider configurado (Console, Serilog, etc).
Log Levels
| Nivel | Valor | Quando usar |
|---|---|---|
Trace | 0 | Detalhes internos de execucao β nunca em producao |
Debug | 1 | Informacoes uteis para desenvolvimento e debugging |
Information | 2 | Fluxo normal da aplicacao β eventos de negocio importantes |
Warning | 3 | Situacao inesperada mas que nao impede a operacao |
Error | 4 | Falha em uma operacao especifica β requer atencao |
Critical | 5 | Falha catastrofica β aplicacao pode parar de funcionar |
Simulador de Log Level
Selecione o nivel minimo de log e veja quais mensagens passam pelo filtro:
Nivel minimo: Information (2)
| Nivel | Mensagem | Status |
|---|---|---|
Trace | Entering method ProcessOrder with 3 parameters | Filtrado |
Debug | Cache key order-123 not found, querying database | Filtrado |
Information | Order 123 created successfully for customer ABC | Passa |
Information | Payment processed: R$ 150.00 via PIX | Passa |
Warning | Retry attempt 2/3 for external API call to payment gateway | Passa |
Warning | Response time exceeded 2s threshold for endpoint /api/orders | Passa |
Error | Failed to send email notification for order 456 | Passa |
Error | Database connection timeout after 30s | Passa |
Critical | Unhandled exception β application shutting down | Passa |
Total visivel: 7 de 9
[LogProperties] do .NET 8+ para controlar o que e serializado. Pergunta de Entrevista
Qual a diferenca entre ILogger, ILoggerFactory e ILoggerProvider?
ILoggerβ Interface para escrever logs. Voce injetaILogger<T>nos servicos.ILoggerFactoryβ Fabrica que cria instancias deILogger. Usa quando precisa criar loggers dinamicamente.ILoggerProviderβ Implementacao de destino (Console, File, Seq). Registrado no DI viaAddProvider().
O framework usa ILoggerFactory para criar loggers que despacham para todos os ILoggerProvider registrados.