feat(trace-log): trace线程传递

This commit is contained in:
zhansihu 2023-11-13 15:56:53 +08:00
parent 1af1ceccca
commit 674637e2d0

View File

@ -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<T> implements Supplier<T> {
private static final String CTX_LOG_ID = "ctxLogId";
private String traceId;
private Supplier<T> 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 <T> TraceSupplier<T> create(Supplier<T> supplier) {
TraceSupplier<T> traceSupplier = new TraceSupplier<>();
traceSupplier.supplier = supplier;
traceSupplier.traceId = MDC.get(CTX_LOG_ID);
return traceSupplier;
}
}