From 674637e2d0649bca61715dba73649596561a90c2 Mon Sep 17 00:00:00 2001 From: zhansihu Date: Mon, 13 Nov 2023 15:56:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(trace-log):=20trace=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/pokonyan/util/TraceSupplier.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/cn/axzo/pokonyan/util/TraceSupplier.java diff --git a/src/main/java/cn/axzo/pokonyan/util/TraceSupplier.java b/src/main/java/cn/axzo/pokonyan/util/TraceSupplier.java new file mode 100644 index 0000000..eb69dfa --- /dev/null +++ b/src/main/java/cn/axzo/pokonyan/util/TraceSupplier.java @@ -0,0 +1,42 @@ +package cn.axzo.pokonyan.util; + +import org.slf4j.MDC; + +import java.util.function.Supplier; + +/** + * 封装Supplier + * + * @version V1.0 + * @author: ZhanSiHu + * @date: 2023/11/13 15:47 + */ +public class TraceSupplier implements Supplier { + + private static final String CTX_LOG_ID = "ctxLogId"; + + private String traceId; + + private Supplier supplier; + + private TraceSupplier() {} + + + @Override + public T get() { + MDC.put(CTX_LOG_ID, this.traceId); + try { + return supplier.get(); + } finally { + MDC.remove(CTX_LOG_ID); + } + } + + public static TraceSupplier create(Supplier supplier) { + TraceSupplier traceSupplier = new TraceSupplier<>(); + traceSupplier.supplier = supplier; + traceSupplier.traceId = MDC.get(CTX_LOG_ID); + return traceSupplier; + } + +}