Spring Boot - Registro

Spring Boot utiliza el registro de Apache Commons para todos los registros internos. Las configuraciones predeterminadas de Spring Boot brindan soporte para el uso de Java Util Logging, Log4j2 y Logback. Con estos, podemos configurar el registro de la consola así como el registro de archivos.

Si está utilizando Spring Boot Starters, Logback proporcionará un buen soporte para el registro. Además, Logback también proporciona un buen soporte para Common Logging, Util Logging, Log4J y SLF4J.

Formato de registro

El formato predeterminado de Spring Boot Log se muestra en la captura de pantalla que se muestra a continuación.

que le brinda la siguiente información:

  • Date y Time que da la fecha y hora del registro

  • Log level muestra INFO, ERROR o WARN

  • Process ID

  • El --- que es un separador

  • Thread name está entre corchetes []

  • Logger Name que muestra el nombre de la clase de origen

  • El mensaje de registro

Salida de registro de la consola

Los mensajes de registro predeterminados se imprimirán en la ventana de la consola. De forma predeterminada, los mensajes de registro “INFO”, “ERROR” y “WARN” se imprimirán en el archivo de registro.

Si tiene que habilitar el registro de nivel de depuración, agregue la marca de depuración al iniciar su aplicación usando el comando que se muestra a continuación:

java –jar demo.jar --debug

También puede agregar el modo de depuración a su archivo application.properties como se muestra aquí -

debug = true

Salida de registro de archivo

De forma predeterminada, todos los registros se imprimirán en la ventana de la consola y no en los archivos. Si desea imprimir los registros en un archivo, debe establecer la propiedadlogging.file o logging.path en el archivo application.properties.

Puede especificar la ruta del archivo de registro utilizando la propiedad que se muestra a continuación. Tenga en cuenta que el nombre del archivo de registro es spring.log.

logging.path = /var/tmp/

Puede especificar el nombre del archivo de registro propio utilizando la propiedad que se muestra a continuación:

logging.file = /var/tmp/mylog.log

Note - los archivos rotarán automáticamente después de alcanzar el tamaño de 10 MB.

Niveles de registro

Spring Boot es compatible con todos los niveles de registrador, como "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF". Puede definir el registrador raíz en el archivo application.properties como se muestra a continuación:

logging.level.root = WARN

Note- Logback no es compatible con el registro de nivel "FATAL". Se asigna al registro de nivel "ERROR".

Configurar Logback

Logback admite la configuración basada en XML para manejar configuraciones de Spring Boot Log. Los detalles de configuración de registro se configuran enlogback.xmlarchivo. El archivo logback.xml debe colocarse bajo classpath.

Puede configurar el registro de nivel ROOT en el archivo Logback.xml usando el código que se proporciona a continuación:

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>

Puede configurar el appender de la consola en el archivo Logback.xml que se muestra a continuación.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
   <root level = "INFO">
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

Puede configurar el appender del archivo en el archivo Logback.xml usando el código que se proporciona a continuación. Tenga en cuenta que debe especificar la ruta del archivo de registro dentro del appender del archivo.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
   </appender>   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
   </root>
</configuration>

Puede definir el patrón de registro en logback.xmlarchivo utilizando el código que se proporciona a continuación. También puede definir el conjunto de patrones de registro admitidos dentro de la consola o el appender de registro de archivos utilizando el código que se proporciona a continuación:

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>

El código para el archivo logback.xml completo se proporciona a continuación. Tienes que colocar esto en la ruta de clases.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

El código que se proporciona a continuación muestra cómo agregar el registrador slf4j en el archivo de clase principal de Spring Boot.

package com.tutorialspoint.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
   private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
   
   public static void main(String[] args) {
      logger.info("this is a info message");
      logger.warn("this is a warn message");
      logger.error("this is a error message");
      SpringApplication.run(DemoApplication.class, args);
   }
}

El resultado que puede ver en la ventana de la consola se muestra aquí:

La salida que puede ver en el archivo de registro se muestra aquí: