Spring Boot - Journalisation

Spring Boot utilise la journalisation Apache Commons pour toute la journalisation interne. Les configurations par défaut de Spring Boot fournissent une prise en charge pour l'utilisation de Java Util Logging, Log4j2 et Logback. En utilisant ceux-ci, nous pouvons configurer la journalisation de la console ainsi que la journalisation des fichiers.

Si vous utilisez Spring Boot Starters, Logback fournira un bon support pour la journalisation. En outre, Logback fournit également un bon support pour Common Logging, Util Logging, Log4J et SLF4J.

Format du journal

Le format par défaut du journal Spring Boot est indiqué dans la capture d'écran ci-dessous.

qui vous donne les informations suivantes -

  • Date et Time qui donne la date et l'heure du journal

  • Log level affiche INFO, ERROR ou WARN

  • Process ID

  • Le --- qui est un séparateur

  • Thread name est entre crochets []

  • Logger Name qui montre le nom de la classe source

  • Le message du journal

Sortie du journal de la console

Les messages du journal par défaut seront imprimés dans la fenêtre de la console. Par défaut, les messages de journal «INFO», «ERROR» et «WARN» seront imprimés dans le fichier journal.

Si vous devez activer le journal de niveau de débogage, ajoutez l'indicateur de débogage au démarrage de votre application à l'aide de la commande ci-dessous -

java –jar demo.jar --debug

Vous pouvez également ajouter le mode de débogage à votre fichier application.properties comme indiqué ici -

debug = true

Sortie du journal de fichier

Par défaut, tous les journaux s'imprimeront dans la fenêtre de la console et non dans les fichiers. Si vous souhaitez imprimer les journaux dans un fichier, vous devez définir la propriétélogging.file ou logging.path dans le fichier application.properties.

Vous pouvez spécifier le chemin du fichier journal à l'aide de la propriété ci-dessous. Notez que le nom du fichier journal est spring.log.

logging.path = /var/tmp/

Vous pouvez spécifier le nom du fichier journal en utilisant la propriété ci-dessous -

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

Note - les fichiers pivoteront automatiquement après avoir atteint la taille de 10 Mo.

Niveaux de journal

Spring Boot prend en charge tous les niveaux de journalisation tels que «TRACE», «DEBUG», «INFO», «WARN», «ERROR», «FATAL», «OFF». Vous pouvez définir l'enregistreur racine dans le fichier application.properties comme indiqué ci-dessous -

logging.level.root = WARN

Note- Logback ne prend pas en charge le journal de niveau «FATAL». Il est mappé au journal de niveau «ERREUR».

Configurer Logback

Logback prend en charge la configuration basée sur XML pour gérer les configurations Spring Boot Log. Les détails de la configuration de la journalisation sont configurés danslogback.xmlfichier. Le fichier logback.xml doit être placé sous le chemin de classe.

Vous pouvez configurer le journal de niveau ROOT dans le fichier Logback.xml en utilisant le code ci-dessous -

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

Vous pouvez configurer l'appender de console dans le fichier Logback.xml ci-dessous.

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

Vous pouvez configurer l'appender de fichier dans le fichier Logback.xml en utilisant le code ci-dessous. Notez que vous devez spécifier le chemin du fichier journal à l'intérieur du fichier appender.

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

Vous pouvez définir le modèle de journal dans logback.xmlfichier en utilisant le code ci-dessous. Vous pouvez également définir l'ensemble des modèles de journal pris en charge dans la console ou l'appender de journal de fichier en utilisant le code ci-dessous -

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

Le code du fichier complet logback.xml est donné ci-dessous. Vous devez placer ceci dans le chemin de 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>

Le code ci-dessous montre comment ajouter le logger slf4j dans le fichier de classe principale 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);
   }
}

La sortie que vous pouvez voir dans la fenêtre de la console est affichée ici -

La sortie que vous pouvez voir dans le fichier journal est affichée ici -