com.biz.trace.store.DefaultTraceStoreServiceImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz-all Show documentation
Show all versions of biz-all Show documentation
BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。
The newest version!
package com.biz.trace.store;
import com.biz.trace.common.TraceConstant;
import com.biz.trace.id.DefaultTraceIdServiceImpl;
import com.biz.trace.id.TraceIdService;
import com.biz.trace.interceptor.TraceInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
/**
* 默认的日志追踪存储实现类。
*
* 该类实现了 {@link TraceStoreService} 接口,并通过 {@link MDC} 存储当前线程的追踪Id。
* 在多线程环境中,该实现确保每个线程都有独立的追踪Id,以便于日志的追踪和管理。
*
* @see TraceStoreService
* @see DefaultTraceIdServiceImpl
* @author francis
* @since 1.0.1
**/
@Slf4j
public class DefaultTraceStoreServiceImpl implements TraceStoreService {
/**
* 将指定的追踪Id存储在当前线程中。
*
* 该方法被 {@link TraceInterceptor} 调用,用于将请求头中的追踪Id存储在 {@link MDC} 中。
*
* @param traceId 要存储的追踪Id
*/
@Override
public void put(String traceId) {
MDC.put(TraceConstant.TRACE_ID, traceId);
}
/**
* 获取当前线程的追踪Id。
*
* 如果当前线程没有追踪Id,则通过 {@link TraceIdService} 生成一个新的追踪Id并存储在 {@link MDC} 中。
*
* @return 当前线程的追踪Id
*/
@Override
public String get() {
return MDC.get(TraceConstant.TRACE_ID);
}
/**
* 移除当前线程的追踪Id。
*
* 该方法在请求处理完成后调用,以确保 {@link MDC} 中存储的追踪Id不会在线程间泄露。
*/
@Override
public void remove() {
try {
MDC.remove(TraceConstant.TRACE_ID);
} catch (Exception e) {
log.error("移除 TraceIdHolder 失败", e);
throw new RuntimeException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy