/**
* Copyright (c) 2005-2009 springside.org.cn
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
* $Id: TraceUtils.java 693 2009-12-12 10:17:34Z calvinxiu $
*/
package org.springside.examples.showcase.log.trace;
import org.apache.commons.lang.RandomStringUtils;
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
*/
public class TraceUtils {
public static final String TRACE_ID_KEY = "traceId";
public static final int TRACE_ID_LENGTH = 8;
/**
* 开始Trace, 默认生成本次Trace的ID(8字符长)并放入MDC.
*/
public static void beginTrace() {
String traceId = RandomStringUtils.randomAlphanumeric(TRACE_ID_LENGTH);
MDC.put(TRACE_ID_KEY, traceId);
}
/**
* 开始Trace, 将traceId放入MDC.
*/
public static void beginTrace(String traceId) {
MDC.put(TRACE_ID_KEY, traceId);
}
/**
* 结束一次Trace.
* 清除traceId.
*/
public static void endTrace() {
MDC.remove(TRACE_ID_KEY);
}
}