Log4j 2 / SLF4J pour Java : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que cette bibliothèque et à quoi sert-elle

\n\n

Log4j 2 et SLF4J sont deux bibliothèques interconnectées pour la journalisation en Java, qui sont le standard de facto dans le monde du développement d'entreprise. SLF4J (Simple Logging Facade for Java) est une façade (abstraction) qui fournit une API unifiée pour différents frameworks de journalisation. Log4j 2 est l'une des implémentations les plus puissantes et performantes de cette API.

\n\n

Pourquoi est-ce nécessaire ? La journalisation est le processus d'enregistrement des informations sur le fonctionnement d'une application : erreurs, avertissements, messages informatifs, informations de débogage. Sans système de journalisation, les développeurs sont obligés d'utiliser System.out.println(), ce qui entraîne :

\n
    \n
  • L'impossibilité de gérer flexiblement la sortie (activer/désactiver les logs pour différentes parties de l'application)
  • \n
  • L'absence de niveaux de journalisation (INFO, WARN, ERROR, DEBUG)
  • \n
  • Des problèmes de performance (concaténation de chaînes même lorsque les logs sont désactivés)
  • \n
  • L'absence de formats de sortie (date, heure, nom de la classe, thread)
  • \n
\n\n

Log4j 2 résout tous ces problèmes. Il prend en charge la journalisation asynchrone, les filtres, les appenders (sortie vers fichier, console, base de données, réseau), la rotation des logs, et de nombreuses autres fonctions avancées. SLF4J permet, si nécessaire, de passer de Log4j 2 à Logback ou java.util.logging sans modifier le code.

\n\n

Installation

\n\n

Pour les projets Java, l'installation se fait via les systèmes de build Maven ou Gradle. Contrairement à Python (pip) ou Node.js (npm), Java utilise la gestion des dépendances via des fichiers de configuration.

\n\n

Maven (pom.xml)

\n
<!-- API SLF4J + Log4j 2 comme implémentation -->\n<dependency>\n    <groupId>org.apache.logging.log4j</groupId>\n    <artifactId>log4j-slf4j-impl</artifactId>\n    <version>2.20.0</version>\n</dependency>\n\n<!-- API principale Log4j 2 (si vous n'utilisez pas SLF4J) -->\n<dependency>\n    <groupId>org.apache.logging.log4j</groupId>\n    <artifactId>log4j-core</artifactId>\n    <version>2.20.0</version>\n</dependency>
\n\n

Gradle (build.gradle)

\n
dependencies {\n    implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.20.0'\n    implementation 'org.apache.logging.log4j:log4j-core:2.20.0'\n}
\n\n

Après avoir ajouté les dépendances, créez un fichier de configuration log4j2.xml dans le dossier src/main/resources :

\n
<?xml version="1.0" encoding="UTF-8"?>\n<Configuration status="WARN">\n    <Appenders>\n        <Console name="Console" target="SYSTEM_OUT">\n            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>\n        </Console>\n    </Appenders>\n    <Loggers>\n        <Root level="info">\n            <AppenderRef ref="Console"/>\n        </Root>\n    </Loggers>\n</Configuration>
\n\n

Démarrage rapide avec un exemple de code

\n\n

Créez une classe Java simple pour la démonstration :

\n
import org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class QuickStart {\n    // Création du logger pour la classe courante\n    private static final Logger logger = LoggerFactory.getLogger(QuickStart.class);\n\n    public static void main(String[] args) {\n        logger.info("Application démarrée");\n        logger.debug("Ceci est un message de débogage");\n        logger.warn("Avertissement : les ressources s'épuisent");\n        logger.error("Erreur critique : {}", "division par zéro");\n\n        try {\n            int result = 10 / 0;\n        } catch (ArithmeticException e) {\n            logger.error("Erreur lors du calcul", e);\n        }\n    }\n}
\n\n

La sortie console ressemblera à ceci :

\n
14:30:15.123 [main] INFO  QuickStart - Application démarrée\n14:30:15.125 [main] WARN  Q                    

Recommendations