package com.lesingle.creation.common.util;

import cn.hutool.core.util.IdUtil;
import org.slf4j.MDC;

/**
 * TraceId 工具类
 * <p>
 * 用于生成和管理链路追踪 ID，实现全链路日志追踪
 *
 * @author lesingle
 * @since 1.0.0
 */
public class TraceIdUtil {

    /**
     * MDC 中 TraceId 的 key
     */
    private static final String TRACE_ID_KEY = "traceId";

    /**
     * 生成 TraceId 并放入 MDC
     */
    public static void setTraceId() {
        MDC.put(TRACE_ID_KEY, IdUtil.fastSimpleUUID());
    }

    /**
     * 获取当前 TraceId
     *
     * @return TraceId，不存在则返回 "unknown"
     */
    public static String getTraceId() {
        return MDC.get(TRACE_ID_KEY) != null ? MDC.get(TRACE_ID_KEY) : "unknown";
    }

    /**
     * 清除 MDC 中的 TraceId
     */
    public static void clearTraceId() {
        MDC.remove(TRACE_ID_KEY);
    }

    /**
     * 清除所有 MDC 内容
     */
    public static void clear() {
        MDC.clear();
    }

}
