Logback - verschiedene Logfiles für jeden Thread
In diesem Tutorial zeigen wir Ihnen, wie Sie mit LogbackMapped Diagnostic Context (MDC)
undSiftingAppender
eine separate Protokolldatei für jeden Thread erstellen.
P.S Tested with Logback 1.1.2, should work in earlier version.
Note
Weitere Informationen finden Sie inLogback MDC documentation
1. logback.xml example
Einelogback.xml
-Datei, die Ihnen zeigt, wie SieSiftingAppender
undMDC
deklarieren und konfigurieren.
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. Beispiel für Java-Threads
In einem einfachen Thread-Beispiel wurde der Wert "logFileName" überMDC.put
deklariert
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; } }
Starten Sie 10 Threads
int count = 1; while(count<=10){ Head head = new Head(); head.setName("head-" + count); threadPools.execute(head); count++; }
Ausgabe: 10 separate Protokolldateien für 10 Threads.
Note
Mit dieser MDC-Funktion können Sie die Ausgabe sogar für jeden Anmeldebenutzer, jede URI-Anforderung, jeden Remote-Host usw. in einer separaten Protokolldatei protokollieren.