SpringBoot 请求TraceId设置
摘要:该实例主要是基于slf4j
的MDC进行实现tranceId
的上下文保存,当然也可以自己定义ThreadLocal
进行保存,方式一直,对于跨服务的调用也可以把tranceId
放在请求头中,接收方复用该tranceId
基于Filter
的实现
拦截所有的请求
@WebFilter(filterName = "traceIdFilter", urlPatterns = "/*") @Component public class TraceFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException { MDC.put("tranceId", UUID.randomUUID().toString()); filterChain.doFilter(httpServletRequest,httpServletResponse); } }复制代码
logback.xml
配置
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date{HH:mm:ss.SSS} | %X{tranceId} | [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> </appender> <logger name="org.springframework.web" level="INFO"/> <logger name="com.huzhihui" level="INFO"/> <!-- 指定项目可输出的最低级别日志 --> <root level="INFO"> <appender-ref ref="STDOUT"/> </root> </configuration>复制代码
定义控制器
@Slf4j @RestController public class CommonController { @RequestMapping(value = "i18n") public Object i18n(){ log.info("ttts"); log.info("bafgsdaf"); return message; } }复制代码
作者:昵称为空C
链接:https://juejin.cn/post/7017681207676665863