package cn.org.rapid_framework.util; import java.util.UUID; import org.apache.log4j.MDC; /** * 系统运行时打印方便调试与追踪信息的工具类. * * 使用MDC存储traceID, 一次trace中所有日志都自动带有该ID, * 可以方便的用grep命令在日志文件中提取该trace的所有日志. * * 需要在log4j.properties中将ConversionPattern添加%X{traceId},如: * log4j.appender.stdout.layout.ConversionPattern=%d [%c] %X{traceId}-%m%n * * @author calvin * @authro badqiu */ public class LogTraceUtils { public static final String TRACE_ID_KEY = "traceId"; /** * 开始Trace, 如果已经存在该traceId则返回,不存在则生成UUID并放入MDC. * @return traceId */ public static String beginTrace() { String traceId = (String)MDC.get(TRACE_ID_KEY); if(traceId == null) { traceId = UUID.randomUUID().toString().replace("-",""); MDC.put(TRACE_ID_KEY, traceId); } return traceId; } /** * 结束一次Trace. * 清除traceId. */ public static void endTrace() { MDC.remove(TRACE_ID_KEY); } }