Configurer Logback
Ajouteurs, motifs et niveaux
Configurer Logback est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.
Qu'est-ce que Logback ?
Logback est une infrastructure SLF4J populaire, écrite par le même auteur que Log4j. Elle effectue concrètement la journalisation décrite par les appels SLF4J.
Vous la configurez avec un fichier nommé logback.xml sur le chemin de classes, généralement sous src/main/resources.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("Logback reads logback.xml at startup");
}
}Les trois éléments fondamentaux
La configuration de Logback repose sur trois concepts fondamentaux :
- Logger : source nommée d'événements de journalisation, avec un niveau.
- Destination : un emplacement de sortie, comme la console ou un fichier.
- Encodeur/Disposition : met l'événement en forme.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("logger -> appender -> encoder -> output");
}
}Une destination de console
La configuration la plus simple envoie tout vers la console. Le motif de l'encodeur contrôle le format de chaque ligne.
Ce XML se trouve dans logback.xml, et non dans votre code Java.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>Comprendre le motif
Les mots de conversion du motif commencent par % :
%d: horodatage,%level: niveau.%logger: nom du journaliseur,%thread: fil d'exécution.%msg: votre message,%n: retour à la ligne.
%-5level complète le niveau à gauche avec des espaces pour atteindre une largeur de 5.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
// Output rendered by pattern: time LEVEL logger - message
log.info("hello");
}
}Le journaliseur racine et les niveaux
L'élément <root> définit le niveau par défaut pour toute l'application et les destinations auxquelles elle écrit.
Définir level="info" signifie que INFO, WARN et ERROR sont émis ; DEBUG et TRACE sont supprimés.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<root level="warn">
<appender-ref ref="STDOUT" />
</root>
</configuration>Niveaux par paquet
Ajoutez un élément <logger> pour remplacer le niveau d'un paquet. Vous pouvez ainsi activer DEBUG pour votre propre code tout en gardant les bibliothèques silencieuses.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<logger name="com.example.app" level="debug" />
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>Une destination de fichiers avec rotation
En production, vous écrivez généralement dans des fichiers qui effectuent une rotation chaque jour ou selon leur taille, afin que les journaux ne croissent pas sans limite.
RollingFileAppender avec une stratégie fondée sur le temps crée un fichier par jour et conserve un historique limité.
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>Plusieurs destinations simultanément
Le journaliseur racine peut référencer plusieurs destinations ; les journaux sont ainsi envoyés simultanément vers la console et un fichier.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %msg%n</pattern></encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/app.log</file>
<encoder><pattern>%d %-5level %msg%n</pattern></encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>Afficher le MDC
Pour inclure le contexte MDC, comme un identifiant de requête, sur chaque ligne, ajoutez %X{key} au motif.
Toute valeur placée dans le MDC apparaît alors automatiquement.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
MDC.put("requestId", "req-1234");
// Pattern: %X{requestId} %-5level %msg%n
log.info("handled");
MDC.clear();
}
}Additivité
Par défaut, les événements d'un journaliseur sont également envoyés aux destinations de ses ancêtres. C'est l'additivité.
Si un journaliseur de paquet possède sa propre destination et que vous ne voulez pas de sortie en double, définissez additivity="false" sur celui-ci.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<logger name="com.example.audit" level="info" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<root level="warn">
<appender-ref ref="STDOUT" />
</root>
</configuration>Rechargement automatique et variables
Logback peut recharger périodiquement la configuration avec <configuration scan="true">, ce qui est utile pour modifier les niveaux sans redémarrage.
Vous pouvez également lire des propriétés, comme un répertoire de journaux, avec les paramètres de substitution ${LOG_DIR}.
<configuration scan="true" scanPeriod="30 seconds">
<property name="LOG_DIR" value="logs" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_DIR}/app.log</file>
<encoder><pattern>%d %-5level %msg%n</pattern></encoder>
</appender>
<root level="info"><appender-ref ref="FILE" /></root>
</configuration>Vérification rapide
Testez vos connaissances de la configuration de Logback.
Récapitulatif
Vous avez appris à configurer Logback :
- La configuration se trouve dans
logback.xml, avec des journaliseurs, des destinations et des encodeurs. - Les motifs mettent les lignes en forme avec
%d,%level,%msget%X{}. - RollingFileAppender effectue la rotation des journaux ; définissez les niveaux par paquet et l'additivité.
- Activez
scanpour permettre la reconfiguration à chaud.
Vous avez terminé le cours de journalisation.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("Logback configuration course complete");
}
}Questions Fréquemment Posées
La leçon « Configurer Logback » est-elle gratuite ?
Oui — le texte complet de « Configurer Logback » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Configurer Logback » ?
Ajouteurs, motifs et niveaux Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Java Academy ?
Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Configurer Logback » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?
Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi utiliser la journalisation structurée
- Façade SLF4J et journaliseurs
- Journalisation paramétrée
- Configurer Logback