MDC 是什么
MDC 是 Java 中的一种日志记录工具,底层实现是对 ThreadLocal 的封装,以实现线程级别的调用链路追踪,kv 形式存储
生成 TraceId
生成规则:服务器 IP + ID 产生的时间 + 自增序列 + 当前进程号
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.lang3.StringUtils;
public class TraceIdGenerator {
private static String IP_16 = "ffffffff";
private static AtomicInteger count = new AtomicInteger(1000);
public static String P_ID_CACHE = null;
static {
try {
String ipAddress = getInetAddress();
if (ipAddress != null) {
IP_16 = getIP_16(ipAddress);
}
} catch (Throwable e) {
// ignore
}
}
private static String getTraceId(String ip, long timestamp, int nextId) {
StringBuilder appender = new StringBuilder(30);
appender.