Class StructuredLogger

java.lang.Object
br.com.archbase.logging.StructuredLogger

public final class StructuredLogger extends Object
Logger estruturado com suporte a correlation ID e campos personalizados. Usa MDC (Mapped Diagnostic Context) do SLF4J para propagar contexto.

Uso:


// Com correlation ID automático
StructuredLogger.info("Processamento iniciado", "userId", "123", "operation", "export");

// Com correlation ID específico
StructuredLogger.withCorrelationId("custom-id").info("Mensagem");

// Com supplier lazy evaluation
StructuredLogger.debug(() -> "Dado: " + expensiveOperation());

// Limpar contexto
StructuredLogger.clear();

  • Constructor Details

    • StructuredLogger

      public StructuredLogger()
  • Method Details

    • generateCorrelationId

      public static String generateCorrelationId()
      Gera um novo correlation ID.
      Returns:
      Novo correlation ID UUID
    • setCorrelationId

      public static void setCorrelationId(String correlationId)
      Define o correlation ID no MDC.
      Parameters:
      correlationId - Correlation ID a ser definido
    • getCorrelationId

      public static String getCorrelationId()
      Obtém o correlation ID atual do MDC.
      Returns:
      Correlation ID atual ou null se não definido
    • setTracingContext

      public static void setTracingContext(String traceId, String spanId)
      Define o trace ID e span ID no MDC (para integração com tracing distribuído).
      Parameters:
      traceId - Trace ID
      spanId - Span ID
    • withCorrelationId

      public static StructuredLogger.LoggerContext withCorrelationId(String correlationId)
      Cria um contexto com correlation ID específico.
      Parameters:
      correlationId - Correlation ID a ser usado
      Returns:
      LoggerContext para encadeamento
    • withNewCorrelationId

      public static StructuredLogger.LoggerContext withNewCorrelationId()
      Cria um contexto com novo correlation ID gerado automaticamente.
      Returns:
      LoggerContext para encadeamento
    • info

      public static void info(String message, Object... keysValues)
      Registra mensagem no nível INFO com campos estruturados.
      Parameters:
      message - Mensagem a ser logada
      keysValues - Pares chave-valor para incluir no contexto
    • error

      public static void error(String message, Object... keysValues)
      Registra mensagem no nível ERROR com campos estruturados.
      Parameters:
      message - Mensagem a ser logada
      keysValues - Pares chave-valor para incluir no contexto
    • error

      public static void error(String message, Throwable throwable, Object... keysValues)
      Registra mensagem no nível ERROR com exceção.
      Parameters:
      message - Mensagem a ser logada
      throwable - Exceção a ser logada
      keysValues - Pares chave-valor para incluir no contexto
    • warn

      public static void warn(String message, Object... keysValues)
      Registra mensagem no nível WARN com campos estruturados.
      Parameters:
      message - Mensagem a ser logada
      keysValues - Pares chave-valor para incluir no contexto
    • debug

      public static void debug(String message, Object... keysValues)
      Registra mensagem no nível DEBUG com campos estruturados.
      Parameters:
      message - Mensagem a ser logada
      keysValues - Pares chave-valor para incluir no contexto
    • trace

      public static void trace(String message, Object... keysValues)
      Registra mensagem no nível TRACE com campos estruturados.
      Parameters:
      message - Mensagem a ser logada
      keysValues - Pares chave-valor para incluir no contexto
    • log

      public static void log(String level, Supplier<String> message)
      Registra mensagem lazy (só executa supplier se nível estiver habilitado).
      Parameters:
      level - Nível de log ("info", "warn", "error", "debug", "trace")
      message - Supplier da mensagem
    • clear

      public static void clear()
      Limpa todos os campos do MDC.