设置
import org.slf4j.MDC;
String traceId = cn.hutool.core.util.IdUtil.fastSimpleUUID();
MDC.put("traceId", traceId);
logback.xml 日志输出格式
%X{traceId} 取值:
格式配置:
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{50} - %msg %X{traceId}%n</pattern>
微服务之间调用
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
过滤器配置
启动类 加上注解 @ServletComponentScan
@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
System.out.println("http://127.0.0.1:9989/swagger-ui.html");
}
}
LogTraceFilter 过滤器类
import cn.hutool.core.util.IdUtil;
import com.my.test.constants.MyConstants;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/*")
@Slf4j
public class LogTraceFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
MDC.put(MyConstants.TRACE_ID, IdUtil.fastSimpleUUID());
log.info("我是过滤器,我进来了");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
注意事项
MDC.put 后不要马上 log输出,
可能值还没生成