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.