All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.biz.trace.store.DefaultTraceStoreServiceImpl Maven / Gradle / Ivy

Go to download

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