Observabilidade nao e opcional em producao. Sem logs estruturados, metricas e tracing distribuido, debugar problemas em microservicos e como procurar agulha num palheiro. Invista tempo configurando desde o inicio.

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.

ILoggerMeterActivityApplication.NET ServiceLogsEventos discretosMetricsContadores, histogramasTracesSpans distribuidosCollectorOTEL CollectorSeqLog searchGrafanaDashboardsJaegerTrace viewer
PilarO que capturaExemplo
LogsEventos discretos com contexto (timestamp, nivel, mensagem, propriedades)Order 12345 created for customer ABC
MetricasValores numericos agregados ao longo do tempo (contadores, histogramas, gauges)http_requests_total, request_duration_seconds
TracesCaminho completo de uma requisicao atraves de multiplos servicosTraceId 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).

public class OrderService { private readonly ILogger<OrderService> _logger; public OrderService(ILogger<OrderService> logger) { _logger = logger; } public async Task<Order> CreateOrderAsync(CreateOrderDto dto) { _logger.LogInformation("Creating order for customer {CustomerId}", dto.CustomerId); try { var order = await _repository.CreateAsync(dto); _logger.LogInformation("Order {OrderId} created successfully", order.Id); return order; } catch (Exception ex) { _logger.LogError(ex, "Failed to create order for customer {CustomerId}", dto.CustomerId); throw; } } }

Log Levels

NivelValorQuando usar
Trace0Detalhes internos de execucao β€” nunca em producao
Debug1Informacoes uteis para desenvolvimento e debugging
Information2Fluxo normal da aplicacao β€” eventos de negocio importantes
Warning3Situacao inesperada mas que nao impede a operacao
Error4Falha em uma operacao especifica β€” requer atencao
Critical5Falha 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)

NivelMensagemStatus
TraceEntering method ProcessOrder with 3 parametersFiltrado
DebugCache key order-123 not found, querying databaseFiltrado
InformationOrder 123 created successfully for customer ABCPassa
InformationPayment processed: R$ 150.00 via PIXPassa
WarningRetry attempt 2/3 for external API call to payment gatewayPassa
WarningResponse time exceeded 2s threshold for endpoint /api/ordersPassa
ErrorFailed to send email notification for order 456Passa
ErrorDatabase connection timeout after 30sPassa
CriticalUnhandled exception β€” application shutting downPassa

Total visivel: 7 de 9

Nunca logue dados sensiveis (PII, tokens, senhas). Use destructuring seletivo. Mascare campos como CPF, cartao de credito e tokens antes de logar. Considere usar [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 injeta ILogger<T> nos servicos.
  • ILoggerFactory β€” Fabrica que cria instancias de ILogger. Usa quando precisa criar loggers dinamicamente.
  • ILoggerProvider β€” Implementacao de destino (Console, File, Seq). Registrado no DI via AddProvider().

O framework usa ILoggerFactory para criar loggers que despacham para todos os ILoggerProvider registrados.