Logs en Spring Boot con Apache Commons

Clase 16 de 31Curso de Java: Backend con Spring Boot

Contenido del curso

JPA con Spring y Spring Data

Resumen

Cuando trabajas con aplicaciones en Spring Boot, saber exactamente por dónde fluye la información y en qué punto algo falla resulta fundamental. Los logs son esa herramienta de depuración que te permite rastrear el comportamiento de tu código en tiempo de ejecución, indicando por qué clase, por qué método y con qué nivel de detalle quieres visualizar los mensajes. Dominar su uso marca una diferencia enorme, especialmente en arquitecturas de microservicios y sistemas distribuidos.

¿Qué son los logs y por qué son esenciales en Spring Boot?

Los logs funcionan como un registro detallado de lo que sucede dentro de tu aplicación. En lugar de depender únicamente de impresiones en consola, la librería Apache Commons Logging ofrece niveles estructurados que permiten filtrar la información según el contexto. Los tres niveles principales son:

  • Error: muestra información únicamente cuando ocurre una excepción o fallo en la aplicación.
  • Info: despliega información general, ideal para confirmar que el flujo pasa por determinado método o clase.
  • Debug: orientado a la depuración profunda durante el desarrollo, mostrando valores de variables y detalles del código fuente.

Cada nivel tiene un propósito claro. En un servidor productivo, normalmente se mantiene activo el nivel info y se apaga el nivel debug, ya que no necesitas depurar en producción. El nivel error siempre permanece activo para capturar fallos críticos.

¿Cómo configurar los niveles de log en application.properties?

La configuración se realiza en el archivo application.properties del proyecto [2:40]. Allí defines qué nivel de log quieres para cada componente:

properties logging.level.root=debug logging.level.org.springframework=info logging.level.org.hibernate=error

  • logging.level.root establece el nivel general de toda la aplicación.
  • El nivel para Spring Framework se configura de forma independiente.
  • Para Hibernate, que se utiliza en la capa de persistencia, puedes limitarlo solo a errores.

Si cambias logging.level.root de info a error [3:25], al reiniciar el servidor notarás que desaparecen todos los mensajes informativos. Solo se mostrarán los errores reales. Este comportamiento te da control total sobre la cantidad de información visible en la consola.

¿Cómo crear un logger en tu clase principal?

Dentro de la clase FundamentosApplication, se inicializa el logger utilizando LogFactory [4:07]:

java private static Log logger = LogFactory.getLog(FundamentosApplication.class);

Este objeto se asocia a la clase donde te encuentras, lo que permite identificar en los mensajes exactamente de dónde proviene cada log. Para imprimir un error, basta con llamar:

java logger.error("Esto es un error del aplicativo");

Al ejecutar la aplicación, verás en consola la fecha, hora, clase y el mensaje del error [5:02]. Esta estructura facilita localizar problemas rápidamente.

¿Cómo usar info y debug en las dependencias?

Dentro de una dependencia del proyecto, puedes combinar ambos niveles para obtener trazabilidad completa [6:18]:

java logger.info("Hemos ingresado al método printWithDependency"); logger.debug("El número enviado como parámetro a la dependencia operación es: " + numero);

El nivel info confirma que entraste al método. El nivel debug muestra el valor concreto de la variable, algo muy útil cuando buscas un comportamiento inesperado durante el desarrollo.

¿Cómo capturar excepciones con logs de nivel error?

Una práctica común en Java es usar bloques try-catch junto con los logs [8:15]. Cuando provocas un error, como una división por cero, el flujo entra directamente al catch sin ejecutar las líneas posteriores al fallo:

java try { int valor = 10 / 0; logger.debug("Mi valor: " + valor); } catch (Exception e) { logger.error("Esto es un error al dividir por cero: " + e.getMessage()); }

El logger.debug nunca se ejecuta porque la excepción interrumpe el flujo. En cambio, el logger.error captura y muestra el mensaje de la excepción [9:10]. También es posible imprimir el stack trace completo para obtener más detalle sobre el origen del fallo.

Esta combinación de try-catch con niveles de log es la forma profesional de manejar errores en aplicaciones Spring Boot. Te permite mantener visibilidad sobre los fallos sin exponer información innecesaria en entornos productivos.

Ahora es tu turno: implementa logs con los tres niveles en las dependencias que has creado a lo largo del proyecto. Si logras generar un error controlado y capturarlo con el nivel error, habrás consolidado este conocimiento. Comparte tus dudas o resultados en los comentarios.