pom.xml引入:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
TraceInfo代码:
@Data
public class TraceInfo
{
private String traceId;
private String ip;
private String date;
private String param;
private String errorDetail;
}
TraceIdUtil代码:
@Component
public class TraceIdUtil
{
private static Tracer tracer;
public TraceIdUtil(Tracer tracer)
{
if (null == TraceIdUtil.tracer)
{
TraceIdUtil.tracer = tracer;
}
}
public static String getErrorTraceId()
{
try
{
return "traceId:" + TraceIdUtil.tracer.getCurrentSpan().traceIdString() + ", " + TraceIdUtil.getSecurityIP(InetAddress.getLocalHost().getHostAddress()) + ", date:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
catch (UnknownHostException e)
{
return "traceId:" + TraceIdUtil.tracer.getCurrentSpan().traceIdString() + ", date:" + new Date().toString();
}
}
public static TraceInfo getTraceInfo()
{
TraceInfo traceInfo = new TraceInfo();
traceInfo.setDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
traceInfo.setTraceId(TraceIdUtil.tracer.getCurrentSpan().traceIdString());
try
{
traceInfo.setIp(TraceIdUtil.getSecurityIP(InetAddress.getLocalHost().getHostAddress()));
return traceInfo;
}
catch (UnknownHostException e)
{
return traceInfo;
}
}
private static String getSecurityIP(String ip)
{
String nullIP = "ip:***.***.***.***";
if (StringUtils.isBlank(ip))
{
return nullIP;
}
String[] split = ip.split("\\.");
if (split.length == 4)
{
return "ip:***.***." + split[2] + "." + split[3];
}
return nullIP;
}
}