Spring Boot - Logging

Spring Boot usa o registro do Apache Commons para todos os registros internos. As configurações padrão do Spring Boot fornecem suporte para o uso de Java Util Logging, Log4j2 e Logback. Usando isso, podemos configurar o registro do console, bem como o registro do arquivo.

Se você estiver usando Spring Boot Starters, o Logback fornecerá um bom suporte para registro. Além disso, o Logback também fornece um bom suporte para Common Logging, Util Logging, Log4J e SLF4J.

Formato de Log

O formato padrão do Spring Boot Log é mostrado na captura de tela abaixo.

que fornece as seguintes informações -

  • Date e Time que dá a data e hora do registro

  • Log level mostra INFO, ERROR ou WARN

  • Process ID

  • O --- que é um separador

  • Thread name está entre colchetes []

  • Logger Name que mostra o nome da classe de origem

  • A mensagem de registro

Saída de log do console

As mensagens de log padrão serão impressas na janela do console. Por padrão, as mensagens de log “INFO”, “ERROR” e “WARN” serão impressas no arquivo de log.

Se você tiver que habilitar o log de nível de depuração, adicione o sinalizador de depuração ao iniciar seu aplicativo usando o comando mostrado abaixo -

java –jar demo.jar --debug

Você também pode adicionar o modo de depuração ao seu arquivo application.properties conforme mostrado aqui -

debug = true

Saída de log de arquivo

Por padrão, todos os logs serão impressos na janela do console e não nos arquivos. Se você deseja imprimir os logs em um arquivo, você precisa definir a propriedadelogging.file ou logging.path no arquivo application.properties.

Você pode especificar o caminho do arquivo de log usando a propriedade mostrada abaixo. Observe que o nome do arquivo de log é spring.log.

logging.path = /var/tmp/

Você pode especificar o próprio nome do arquivo de log usando a propriedade mostrada abaixo -

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

Note - os arquivos irão girar automaticamente após atingir o tamanho de 10 MB.

Níveis de registro

Spring Boot suporta todos os níveis de logger, como “TRACE”, “DEBUG”, “INFO”, “WARN”, “ERROR”, “FATAL”, “OFF”. Você pode definir o logger Root no arquivo application.properties conforme mostrado abaixo -

logging.level.root = WARN

Note- Logback não suporta log de nível “FATAL”. Ele é mapeado para o registro de nível “ERROR”.

Configurar Logback

O Logback oferece suporte à configuração baseada em XML para lidar com as configurações do Spring Boot Log. Os detalhes de configuração de registro são configurados emlogback.xmlArquivo. O arquivo logback.xml deve ser colocado no caminho de classe.

Você pode configurar o log do nível ROOT no arquivo Logback.xml usando o código fornecido abaixo -

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

Você pode configurar o appender do console no arquivo Logback.xml fornecido a seguir.

<?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>

Você pode configurar o anexador de arquivo no arquivo Logback.xml usando o código fornecido a seguir. Observe que você precisa especificar o caminho do arquivo de log dentro do anexador de arquivo.

<?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>

Você pode definir o padrão de Log em logback.xmlarquivo usando o código fornecido abaixo. Você também pode definir o conjunto de padrões de log suportados dentro do console ou anexador de log de arquivo usando o código fornecido abaixo -

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

O código para o arquivo logback.xml completo é fornecido a seguir. Você tem que colocar isso no caminho da classe.

<?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>

O código fornecido a seguir mostra como adicionar o logger slf4j no arquivo de classe principal do 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);
   }
}

A saída que você pode ver na janela do console é mostrada aqui -

A saída que você pode ver no arquivo de log é mostrada aqui -