码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • springboot使用filter增加全局traceId,方便日志查找


    一:引入依赖

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-web</artifactId>
    4. </dependency>

    二:编写过滤器:

    1. package com.example.demo.filter;
    2. import org.slf4j.MDC;
    3. import org.springframework.util.StringUtils;
    4. import javax.servlet.*;
    5. import javax.servlet.http.HttpServletRequest;
    6. import java.io.IOException;
    7. import java.util.UUID;
    8. public class FilterGobalTraceId implements Filter {
    9. @Override
    10. public void init(FilterConfig filterConfig) throws ServletException {
    11. // 初始化操作
    12. }
    13. @Override
    14. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    15. throws IOException, ServletException {
    16. try {
    17. HttpServletRequest httpRequest = (HttpServletRequest) request;
    18. String oldTraceId = httpRequest.getHeader("traceId");
    19. if(!StringUtils.isEmpty(oldTraceId)){
    20. MDC.put("traceId",oldTraceId);
    21. }else {
    22. // 生成唯一的traceId
    23. MDC.put("traceId", generateTraceId());
    24. }
    25. chain.doFilter(request, response);
    26. } finally {
    27. // 清除MDC的traceId值,确保在请求结束后不会影响其他请求的日志
    28. MDC.remove("traceId");
    29. }
    30. }
    31. @Override
    32. public void destroy() {
    33. // 清理操作
    34. }
    35. private String generateTraceId() {
    36. // 在此处生成唯一的traceId,并返回
    37. return UUID.randomUUID().toString();
    38. }
    39. }

    三:配置过滤器注册ben,并把过滤器注册

    1. package com.example.demo.filter;
    2. import org.springframework.boot.web.servlet.FilterRegistrationBean;
    3. import org.springframework.context.annotation.Bean;
    4. import org.springframework.context.annotation.Configuration;
    5. @Configuration
    6. public class GobalWebTraceIdConfig {
    7. @Bean
    8. public FilterRegistrationBean loggingFilter() {
    9. FilterRegistrationBean registrationBean = new FilterRegistrationBean<>();
    10. registrationBean.setFilter(new FilterGobalTraceId());
    11. registrationBean.addUrlPatterns("/*"); // 设置过滤的URL模式
    12. return registrationBean;
    13. }
    14. }

  • 相关阅读:
    想要成功申请公派访问学者,特别需要注意这两点 !
    面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
    这份Java面试全栈手册竟让我反败为胜
    手写编程语言-实现运算符重载
    乐乐音乐H5网页版-支持krc歌词(动感歌词、翻译和音译歌词)
    京东大型API网关实践之路
    如何使用记事本制作一个简陋的小网页(2)——表格的建立
    元宇宙产业委叶毓睿:狂欢过后,万众期待的元宇宙怎么样了?
    C语言微博用户管理系统
    伸展树原理介绍
  • 原文地址:https://blog.csdn.net/qq_36881106/article/details/132830193
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号