feat(trace-log): trace线程传递
This commit is contained in:
parent
1af1ceccca
commit
674637e2d0
42
src/main/java/cn/axzo/pokonyan/util/TraceSupplier.java
Normal file
42
src/main/java/cn/axzo/pokonyan/util/TraceSupplier.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user