阅读 242

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;
    }
}复制代码

image.png


作者:昵称为空C
链接:https://juejin.cn/post/7017681207676665863

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐