――In der Stapelverarbeitung möchten Sie sofort suchen, woher dasselbe Verarbeitungsprotokoll stammt, wenn eine Parallelverarbeitung oder eine kontinuierliche Verarbeitung durchgeführt wird. -Schreiben Sie unter der Annahme, dass @ Slf4j verwendet wird
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>traceID: [%X{traceId}] message: %msg%n</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="STDOUT" />
</root>
</configuration>
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
@Slf4j
public class Traceid {
public static void main(String[] args) {
log.info("dummy1");
String uuid = UUID.randomUUID().toString();
MDC.put("traceId", uuid.substring(0, uuid.indexOf("-")));
log.info("dummy2");
MDC.remove("traceId");
log.info("dummy3");
}
}
Konsolenprotokoll
traceID: [] message: dummy1
traceID: [4f9c9243] message: dummy2
traceID: [] message: dummy3
Da MDC.put eine statische Methode ist, können Sie denselben Wert verwenden, wenn Sie ihn in mehreren Threads verwenden. → Da MDC die Map speichert, in der der Schlüssel in ThreadLocal gespeichert ist, müssen Sie sich keine Gedanken darüber machen, ob zwischen Threads derselbe Wert verwendet wird!
Recommended Posts