Utiliser Logging dans Spring Boot
1. L'objectif de la leçon
"Logging" est simplement compris comme "l'enregistrement" des problèmes pendant le fonctionnement des applications. Les problèmes ici sont des erreurs, des avertissements (warning) et d'autres informations,....... Ces informations peuvent être affichées sur l'écran de la Console ou enregistrées dans des fichiers.
Lorsque vous exécutez l'applicationSpring Boot directement sur Eclipse vous pouvez voir les informations sur la fenêtre Console. Ces informations vous montrent l'état de l'application, les erreurs survenant pendant l'exécution de l'application. C'est Logging!.
Il y a beaucoup de bibliothèques Logging différentes telles que Logback, Log4j2, JUL,.. Spring Boot peut travailler avec toutes ces bibliothèques. Par défaut, Spring Boot a automatiquement configuré et utilisé la bibliothèque Logback pour son logging, et vous n'avez pas besoin d'autres configurations, sauf que vous souhaitez personnaliser certains arguments. Les personnalisations ici peuvent consister à spécifier le nom du fichier pour écrire des informations, des motifs (pattern), ...
Dans cette leçon, nous allons discuter du principe de fonctionnement de Logback dans l'application Spring Boot, et apprendre comment personnaliser la manière de Logback.
Les propriétés (properties) peuvent être personnalisées par vous :
logging.config
logging.exception-conversion-word
logging.file
logging.level.*
logging.path
logging.pattern.console
logging.pattern.file
logging.pattern.level
logging.register-shutdown-hook
2. Créer un projet Spring Boot
Sur Eclipse, créez un projet Spring Boot.
Pour utiliser Logging, vous devez utiliser un des "Starter" suivants :
- spring-boot-starter-logging
- spring-boot-starter-web
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.o7planning</groupId>
<artifactId>SpringBootDefaultLogging</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringBootDefaultLogging</name>
<description>Spring Boot +Default Logging</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
MainController.java
package org.o7planning.sblogging.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Controller
public class MainController {
private static final Logger LOGGER = LoggerFactory.getLogger(MainController.class);
@ResponseBody
@RequestMapping(path = "/")
public String home() {
LOGGER.trace("This is TRACE");
LOGGER.debug("This is DEBUG");
LOGGER.info("This is INFO");
LOGGER.warn("This is WARN");
LOGGER.error("This is ERROR");
return "Hi, show loggings in the console or file!";
}
}
Exécutez votre application directement sur Spring Boot, puis visitez le lien suivant :
Sur la fenêtre Console de Eclipse vous pouvez voir les informations Logs comme ci-dessous :
2018-01-14 13:21:57.593 INFO 7980 --- [nio-8080-exec-6] o.o.sblogging.controller.MainController : This is INFO
2018-01-14 13:21:57.593 WARN 7980 --- [nio-8080-exec-6] o.o.sblogging.controller.MainController : This is WARN
2018-01-14 13:21:57.593 ERROR 7980 --- [nio-8080-exec-6] o.o.sblogging.controller.MainController : This is ERROR
3. Logging Level
En fonction de la gravité du problème, Logback divise les informations à enregistrer en 5 niveaux (Level), le plus faible étant TRACE et le plus sévère ERROR. Remarque : Certaines bibliothèques Logging divisent les informations à enregistrer en 7 niveaux différents.
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FATAL
- OFF
Par défaut, Spring Boot n'enregistre que les informations dont la gravité est égale ou supérieure à INFO.
# Default:
logging.level.root=INFO
Changez le Logging Level dans application.properties :
* application.properties *
logging.level.root=WARN
# ..
Réexécutez votre application, et voyez les informations écrites dans la fenêtre Console :
2018-01-14 17:45:50.341 WARN 8500 --- [nio-8080-exec-1] o.o.sblogging.controller.MainController : This is WARN
2018-01-14 17:45:50.342 ERROR 8500 --- [nio-8080-exec-1] o.o.sblogging.controller.MainController : This is ERROR
4. Logging File
Les informations logging par défaut sont écrites sur l'écran de la Console, cependant, vous pouvez les configurer pour qu'elles soient écrites dans des fichiers.
* application.properties *
logging.file=logs/mylog.log
Relancez votre application directement sur Eclipse, puis accédez au lien suivant :
Puis rafraîchissez à nouveau le projet, vous pouvez voir le fichier logging créé.
5. Logging Pattern
Les enregistrements Log (Log record) sont écrits selon un modèle (pattern). Ci-dessous se trouve un modèle (pattern) par défaut :
Et vous pouvez changer"Logging pattern" en personnalisant les propriétés (properties) suivantes :
- logging.pattern.console
- logging.pattern.file
# Pattern:
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
# Output:
2018-Jan-17 01:58:49.958 WARN [http-nio-8080-exec-1] o.o.s.c.MainController - This is WARN
2018-Jan-17 01:58:49.960 ERROR [http-nio-8080-exec-1] o.o.s.c.MainController - This is ERROR
# Pattern:
logging.pattern.console= %d{dd/MM/yyyy HH:mm:ss.SSS} %-5level [%thread] %logger{115} - %msg%n
# Output:
17/01/2018 02:15:15.052 WARN [http-nio-8080-exec-1] org.o7planning.sblogging.controller.MainController - This is WARN
17/01/2018 02:15:15.054 ERROR [http-nio-8080-exec-1] org.o7planning.sblogging.controller.MainController - This is ERROR
# Pattern:
logging.pattern.console=%d{yy-MMMM-dd HH:mm:ss:SSS} %5p %t %c{2}:%L - %m%n
# Output:
18-January-17 02:21:20:317 WARN http-nio-8080-exec-1 o.o.s.c.MainController:22 - This is WARN
18-January-17 02:21:20:320 ERROR http-nio-8080-exec-1 o.o.s.c.MainController:23 - This is ERROR
Tutoriels Spring Boot
- Installer Spring Tool Suite pour Eclipse
- Le Tutoriel de Spring pour débutant
- Le Tutoriel de Spring Boot pour débutant
- Propriétés communes de Spring Boot
- Le Tutoriel de Spring Boot et Thymeleaf
- Le Tutoriel de Spring Boot et FreeMarker
- Le Tutoriel de Spring Boot et Groovy
- Le Tutoriel de Spring Boot et Mustache
- Le Tutoriel de Spring Boot et JSP
- Le Tutoriel de Spring Boot, Apache Tiles, JSP
- Utiliser Logging dans Spring Boot
- Surveillance des applications avec Spring Boot Actuator
- Créer une application Web multilingue avec Spring Boot
- Utiliser plusieurs ViewResolvers dans Spring Boot
- Utiliser Twitter Bootstrap dans Spring Boot
- Le Tutoriel de Spring Boot Interceptor
- Le Tutoriel de Spring Boot, Spring JDBC et Spring Transaction
- Le Tutoriel de Spring JDBC
- Le Tutoriel de Spring Boot, JPA et Spring Transaction
- Le Tutoriel de Spring Boot et Spring Data JPA
- Le Tutoriel de Spring Boot, Hibernate et Spring Transaction
- Intégration de Spring Spring, JPA et H2 Database
- Le Tutoriel de Spring Boot et MongoDB
- Utiliser plusieurs DataSources avec Spring Boot et JPA
- Utiliser plusieurs DataSources avec Spring Boot et RoutingDataSource
- Créer une application de connexion avec Spring Boot, Spring Security, Spring JDBC
- Créer une application de connexion avec Spring Boot, Spring Security, JPA
- Créer une application d'enregistrement d'utilisateur avec Spring Boot, Spring Form Validation
- Exemple de OAuth2 Social Login dans Spring Boot
- Exécuter des tâches planifiées en arrière-plan dans Spring
- Exemple CRUD Restful WebService avec Spring Boot
- Exemple Spring Boot Restful Client avec RestTemplate
- Exemple CRUD avec Spring Boot, REST et AngularJS
- Sécurité Spring RESTful Service utilisant Basic Authentication
- Sécuriser Spring Boot RESTful Service en utilisant Auth0 JWT
- Exemple Upload file avec Spring Boot
- Le exemple de Download file avec Spring Boot
- Le exemple de Upload file avec Spring Boot et jQuery Ajax
- Le exemple de Upload file avec Spring Boot et AngularJS
- Créer une application Web Panier avec Spring Boot, Hibernate
- Le Tutoriel de Spring Email
- Créer une application Chat simple avec Spring Boot et Websocket
- Déployer le application Spring Boot sur Tomcat Server
- Déployer le application Spring Boot sur Oracle WebLogic Server
- Installer un certificat SSL gratuit Let's Encrypt pour Spring Boot
- Configurer Spring Boot pour rediriger HTTP vers HTTPS
Show More