Resumen del funcionamiento del sistema de logging en Spring Boot 1.4.0.RELEASE
Principales características
- Spring Boot utiliza internamente Commons Logging
- Existe configuraciones para Java Util Logging, Log4J2 y Logback
- Por defecto se utiliza la Consola para mostrar los logs. Opcionalmente podemos escribir en fichero
- Logback es el sistema de log utilizado si utilizamos los Spring Boot Starters (spring-boot-starter-parent, etc)
- Logback tiene niveles ERROR, WARN, INFO, DEBUG o TRACE pero no tiene FATAL
- Se permite extender el comportamiento de logback mediante extensiones
- Por defecto se muestran los niveles ERROR, WARN e INFO
Activación del nivel DEBUG
Como cualquier aplicación de Spring Boot podemos activar el nivel de DEBUG como cualquier configuración más. Eso significa que podemos indicarselo como argumento al arrancar la aplicación, como variable de entorno, en el application.properties o application.yml, etc
Es importante mencionar que la activacion del nivel de DEBUG solo afecta internamente a Spring Boot, no a los logs de nuestra aplicación, los cuales los tenemos que configurar mediante otro mecanismo.
Por ejemplo,
En el arranque de la aplicación
$ java -jar my-application.jar --debug
En el fichero application.properties o application.yml
... debug=true
... debug: true
Escribir logs a fichero
Por defecto Spring Boot escribe por consola pero opcionalmente le podemos decir que escriba a fichero.
Al igual que la activación del nivel a DEBUG la configuración para activar el fichero de log sigue el mismo principo de configuración de Spring Boot.
Los ficheros rotan por defecto cada 10Mb.
Las propiedades para indicar el fichero donde escribir los logs son:
- logging.file
- logging.path
Modificar los niveles de logs de nuestra aplicación o de librerías de terceros
Siguiendo los mismos principios de configuración de Spring Boot la modificación de los nieves de log de nuestra aplicación o de librerías de terceros es bastante fácil.
Por ejemplo,
En el arranque de la aplicación
java -jar my-application.jar --logging.level.org.myapp=DEBUG
En el fichero de configuración application.properties o application.yml
logging.level.org.myapp=DEBUG
... logging: level: org: myapp: DEBUG
Activar otros sistemas de log
Se acivan por defecto al incluirlos en el classpath.
Podemos forzar a Spring Boot a utilzar un sistema de logging diferente al por defecto, configurando la propiedad de sistema:
org.springframework.boot.logging.LoggingSystem=Nombre completo de la clase que implementa el sistema de logging
o bien desactivar por completo el sistema de logging
org.springframework.boot.logging.LoggingSystem=none
Configuración de estos sistemas de logging
Una vez hemos cambiado el sistema de logging, Spring Boot se encargaría de leer lo ficheros de configuración de esos sistemas, aunque se recomienda que se utilicen la versión para Spring Boot.
Es decir, para los sistemas de logging como
- log4j2 el fichero de configuración es log4j2.xml
- Para Java Util Logging el fichero de configuración es logging.properties
pero Spring boot recomienda que utilicemos la versión para Spring Boot que serían respectivamente:
- log4j2-spring.xml
- logging-spring.properties