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
}
}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 SpringMDC (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 requestLogging estructurado (JSON) para producción:
logging:
structured:
format:
console: ecs # Elastic Common Schema (Spring Boot 3.4+)- 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.