Skip to content

Latest commit

 

History

History

26-Spring-Boot-Logging

// concepto

Spring Boot usa SLF4J (Simple Logging Facade for Java) como capa de abstracción y Logback como implementación por defecto. El código siempre programa contra SLF4J, lo que permite cambiar la implementación sin tocar el código.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Service
public class PedidoService {
    private static final Logger log = LoggerFactory.getLogger(PedidoService.class);

    public void crearPedido(Pedido p) {
        log.info("Creando pedido: {}", p.getId());
        log.debug("Detalles del pedido: {}", p);  // solo visible en DEBUG
    }
}
// key features

Niveles de log (de menor a mayor severidad):

TRACE < DEBUG < INFO < WARN < ERROR

El nivel configurado filtra todos los mensajes por debajo: con INFO, no se muestran TRACE ni DEBUG.

Configuración de niveles:

# application.yml
logging:
  level:
    root: INFO                           # nivel global
    com.ejemplo.servicio: DEBUG          # paquete específico
    org.springframework.web: WARN        # reduce ruido de Spring

MDC (Mapped Diagnostic Context):

MDC.put("requestId", UUID.randomUUID().toString());
// Todos los logs del hilo incluirán requestId automáticamente
MDC.clear();  // limpiar al final de la request

Logging estructurado (JSON) para producción:

logging:
  structured:
    format:
      console: ecs  # Elastic Common Schema (Spring Boot 3.4+)
// ventajas
  • SLF4J como fachada: cambias Logback por Log4j2 sin tocar el código.
  • Niveles configurables por paquete: DEBUG solo donde lo necesitas, no globalmente.
  • MDC para correlacionar logs de una misma request (requestId, userId...).
  • Logging estructurado JSON para ingesta en ELK, Splunk, Datadog.

Ver ExpLogging.java, ExpLogLevels.java, ExpMDC.java y ExpStructuredLogging.java para ejemplos ejecutables con SLF4J, niveles de log, MDC y logging estructurado JSON.