Logback - fichier journal différent pour chaque thread
Dans ce didacticiel, nous allons vous montrer comment utiliser LogbackMapped Diagnostic Context (MDC)
etSiftingAppender
pour créer un fichier journal distinct pour chaque thread.
P.S Tested with Logback 1.1.2, should work in earlier version.
Note
Plus d'infos, reportez-vous à ceLogback MDC documentation
1. logback.xml example
Un fichierlogback.xml
pour vous montrer comment déclarer et configurerSiftingAppender
etMDC
.
logback.xml
logFileName head0 ${USER_HOME}/${logFileName}.log %d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} - %msg%n ${USER_HOME}/${logFileName}.%i.log.zip 1 10 10MB %-5level %logger{36} - %msg%n
2. Exemple de threads Java
Un exemple de thread simple, a déclaré la valeur ‘logFileName’ viaMDC.put
Head.java
package com.example.analyzer.core; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; public class Head implements Runnable { static Logger logger = LoggerFactory.getLogger(Head.class); private String name; @Override public void run() { MDC.put('logFileName', getName()); logger.debug("hello"); //remember remove this MDC.remove('logFileName'); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Démarrer 10 discussions
int count = 1; while(count<=10){ Head head = new Head(); head.setName("head-" + count); threadPools.execute(head); count++; }
Sortie: 10 fichiers journaux distincts pour 10 threads.
Note
Avec cette fonction MDC, vous pouvez même enregistrer la sortie dans un fichier journal distinct pour chaque utilisateur de connexion, chaque demande d'URI, chaque hôte distant, etc.