―― Dans le traitement par lots, vous souhaitez rechercher immédiatement d'où provient le même journal de traitement lorsque le traitement parallèle ou le traitement continu est effectué. -Écrire en supposant que @ Slf4j est utilisé
--Dans la classe Java, enregistrez les informations que vous souhaitez afficher dans le journal à l'aide de MDC (MDC.put)
% X {<key>}
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");
}
}
Journal de la console
traceID: [] message: dummy1
traceID: [4f9c9243] message: dummy2
traceID: [] message: dummy3
Étant donné que MDC.put est une méthode statique, pourquoi ne pas utiliser la même valeur lors de son utilisation dans plusieurs threads? → Puisque la carte où MDC stocke la clé est stockée dans ThreadLocal, il n'y a pas besoin de s'inquiéter d'utiliser la même valeur entre les threads!
Recommended Posts