当前位置: 首页 > news >正文

springboot使用filter增加全局traceId,方便日志查找

一:引入依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

二:编写过滤器:

package com.example.demo.filter;import org.slf4j.MDC;
import org.springframework.util.StringUtils;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.UUID;public class FilterGobalTraceId implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化操作}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {try {HttpServletRequest httpRequest = (HttpServletRequest) request;String oldTraceId = httpRequest.getHeader("traceId");if(!StringUtils.isEmpty(oldTraceId)){MDC.put("traceId",oldTraceId);}else {// 生成唯一的traceIdMDC.put("traceId", generateTraceId());}chain.doFilter(request, response);} finally {// 清除MDC的traceId值,确保在请求结束后不会影响其他请求的日志MDC.remove("traceId");}}@Overridepublic void destroy() {// 清理操作}private String generateTraceId() {// 在此处生成唯一的traceId,并返回return UUID.randomUUID().toString();}
}

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

package com.example.demo.filter;import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class GobalWebTraceIdConfig {@Beanpublic FilterRegistrationBean<FilterGobalTraceId> loggingFilter() {FilterRegistrationBean<FilterGobalTraceId> registrationBean = new FilterRegistrationBean<>();registrationBean.setFilter(new FilterGobalTraceId());registrationBean.addUrlPatterns("/*"); // 设置过滤的URL模式return registrationBean;}
}

相关文章:

springboot使用filter增加全局traceId,方便日志查找

一&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 二&#xff1a;编写过滤器&#xff1a; package com.example.demo.filter;import or…...

面经学习三

目录 Java 与 C 的区别 面向对象和面向过程的区别 面向对象特性 Java的基本数据类型 深拷贝和浅拷贝 Java创建对象的几种方式 final, finally, finalize 的区别 Java 与 C 的区别 Java 是纯粹的面向对象语言&#xff0c;所有的对象都继承自 java.lang.Object&#xff0c…...

Open3D 点云配准——可视化匹配点对之间的连线

点云配准 一、算法原理1、概述2、主要函数二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、概述 可视化源点云和目标点云中匹配点对之间的连线,这对于点云配准,尤…...

io多路复用之poll的详细执行过程

1.结构体struct pollfd的定义 struct pollfd { int fd; /* 文件描述符 */ short events; /* 想要监视的事件&#xff08;input/output/priority&#xff09; */ short revents; /* 实际发生的事件&#xff08;返回的事件&#xff09; */ }; 2.定义po…...

网络安全深入学习第四课——热门框架漏洞(RCE— Log4j2远程代码执行)

文章目录 一、log4j2二、背景三、影响版本四、漏洞原理五、LDAP和JNDI是什么六、漏洞手工复现1、利用DNSlog来测试漏洞是否存在2、加载恶意文件Exploit.java&#xff0c;将其编译成class文件3、开启web服务4、在恶意文件Exploit.class所在的目录开启LDAP服务5、监听反弹shell的…...

大数据Flink(八十一):SQL 时区问题

文章目录 SQL 时区问题 ​​​​​​​一、SQL 时区解决的问题...

Input子系统 - Kernel驱动程序 - Android

Input子系统 - Kernel驱动程序 - Android 1、Input子系统相关定义1.1 代码位置1.2 input_dev结构体&#xff1a;表示输入设备1.3 input_handler结构体&#xff1a;struct input_handler - implements one of interfaces for input devices1.4 input_handle结构体&#xff1a;将…...

MySQL里的查看操作

文章目录 查看当前mysql有谁连接查看数据库或者表 查看当前mysql有谁连接 show processlist;查看数据库或者表 列出所有数据库&#xff1a; show databases;查看正在使用的数据库&#xff08;必须大写&#xff09;&#xff1a; SELECT DATABASE();列出数据库中的表&#xf…...

Vim的基础操作

前言 本文将向您介绍关于vim的基础操作 基础操作 在讲配置之前&#xff0c;我们可以新建一个文件 .vimrc&#xff0c;并用vim打开在里面输入set nu 先给界面加上行数&#xff0c;然后shift &#xff1b;输入wq退出 默认打开&#xff1a;命令模式 在命令模式中&#xff1a…...

十天学完基础数据结构-第一天(绪论)

1. 数据结构的研究内容 数据结构的研究主要包括以下核心内容和目标&#xff1a; 存储和组织数据&#xff1a;数据结构研究如何高效地存储和组织数据&#xff0c;以便于访问和操作。这包括了在内存或磁盘上的数据存储方式&#xff0c;如何将数据元素组织成有序或无序的集合&…...

神经网络 03(参数初始化)

一、参数初始化 对于某一个神经元来说&#xff0c;需要初始化的参数有两类&#xff1a;一类是权重W&#xff0c;还有一类是偏置b&#xff0c;偏置b初始化为0即可。而权重W的初始化比较重要&#xff0c;我们着重来介绍常见的初始化方式。 &#xff08;1&#xff09;随机初始化 …...

div设置圆角#前端

要在 div元素上设置圆角&#xff0c;您可以使用 CSS 的 border-radius 属性。 这个属性允许您指定元素的边角为圆角&#xff0c;可以将其应用于一个或多个边角。以下是一些示例代码&#xff1a;1.设置所有四个边角为圆角&#xff1a; div {border-radius: 10px; /* 设置所有四…...

Windows开机密码破解

Windows11以及Windows10(21H2)以上版本 先开机&#xff0c;不进行任何操作&#xff0c;静静的等待登录界面 按住Shift重启 进入“选择一个选项”界面&#xff0c;点击疑难解答 点击高级选项 点击命令提示符 输入两行命令 copy C:\windows\system32\uti1man.exe C: \Window…...

Mobirise for Mac:轻松创建手机网站的手机网站建设软件

如果你是一位设计师或者开发人员&#xff0c;正在寻找一款强大的手机网站建设软件&#xff0c;那么Mobirise for Mac绝对值得你尝试。这个独特的应用程序将帮助你轻松创建优雅而实用的手机网站&#xff0c;而无需编写复杂的代码。 Mobirise for Mac的主要特点包括&#xff1a;…...

[npm] npx 介绍与使用说明

[npm] npx 介绍与使用说明 npm 的由来npx 是什么&#xff1f;npx 特点npx 的特点项目安装包的使用全局安装包的避免指定工具包版本--no-install 参数和--ignore-existing 参数使用不同版本的 node-p 参数-c 参数实战应用 执行 GitHub 源码 npm 的由来 说到 npm 就离不开社区文…...

QT : 仿照QQ 完成弹出登录窗口,并实例化组件

1. 运行效果图 2. Headers #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow(); }; #endif // MAINWINDOW_H 3. mainWindow.cpp &#xff1a…...

typescrip接口 interface详解,以及ts实现多态

ts 接口 当一个对象类型被多次使用时,一般会使用接口(interface)来描述对象的类型,达到复用的目的 示例如下 当一个对象类型被多次使用时,可以看到,很明显代码有大量的冗余 let personTom: { name: string, age?: number, sayHi(name: string): void } {name: Tom,sayHi(n…...

Vivado IP中Generate Output Products的设置说明

文章目录 Vivado IP中Generate Output Products的设置说明Synthesis OptionsRun Settings 官方文档中的介绍Generate Output ProductsSynthesis Options for IP 参考文献 Vivado IP中Generate Output Products的设置说明 在创建IP核时&#xff0c;将IP核的信息配置完成之后会弹…...

9.3.5网络原理(应用层HTTP/HTTPS)

一.HTTP: 1. HTTP是超文本传输协议,除了传输字符串,还可以传输图片,字体,视频,音频. 2. 3.HTTP协议报文格式:a.首行,b.请求头(header),c.空行(相当于一个分隔符,分隔了header和body),d.正文(body). 4. 5.URL:唯一资源描述符(长度不限制). a. b.注意:查询字符串(query stri…...

vue基础知识十一:Vue组件之间的通信方式都有哪些?

一、组件间通信的概念 开始之前&#xff0c;我们把组件间通信这个词进行拆分 组件通信 都知道组件是vue最强大的功能之一&#xff0c;vue中每一个.vue我们都可以视之为一个组件通信指的是发送者通过某种媒体以某种格式来传递信息到收信者以达到某个目的。广义上&#xff0c;…...

基于大语言模型与RAG的AI小说生成:从技术原理到工程实践

1. 项目概述&#xff1a;当AI开始“阅读”与“创作”最近在内容创作和小说爱好者圈子里&#xff0c;一个名为“auto-novel”的项目引起了我的注意。简单来说&#xff0c;这是一个利用人工智能技术&#xff0c;实现从“阅读”现有小说到“模仿创作”新内容的自动化工具。它的核心…...

Happy Island Designer完整指南:免费在线岛屿设计工具终极教程

Happy Island Designer完整指南&#xff1a;免费在线岛屿设计工具终极教程 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)"&#xff0c;是一个在线工具&#xff0c;它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal C…...

Sunshine游戏串流服务器:打造你的个人云端游戏平台

Sunshine游戏串流服务器&#xff1a;打造你的个人云端游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏&#xff1f;Sunshine游戏串流服务器是你…...

DOM NodeList 深入解析

DOM NodeList 深入解析 概述 DOM NodeList 是 Web 开发中常用的一种数据结构,它代表了文档中一系列元素的集合。在本文中,我们将对 DOM NodeList 进行深入解析,包括其定义、特点、使用方法以及在实际开发中的应用。 定义 DOM NodeList 是一个类似数组的对象,它包含了文…...

如何解锁数字化制造的数据瓶颈:stltostp的轻量级STL转STEP解决方案

如何解锁数字化制造的数据瓶颈&#xff1a;stltostp的轻量级STL转STEP解决方案 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在数字化制造与工业4.0转型的浪潮中&#xff0c;数据格式的互操作…...

AI Agent 的难点,不在搭 Demo,而在让人敢交任务

Agent难在让人敢托付 很多团队做 Agent 的误会&#xff0c;是把跑通一次当成好用。 现在搭一个 Demo 确实不难。一个大模型&#xff0c;几段提示词&#xff0c;接几个搜索、表格、浏览器或数据库工具&#xff0c;很快就能演示一个会拆任务、会调用工具、会输出结果的流程。看起…...

2026年国民技术数字IC笔试试卷带答案

满分:100分 时间:90分钟 一、单选题(每题3分,共30分) 1. 在静态时序分析(STA)中,建立时间检查的公式为( ) A. Tclk + Tskew ≥ Tck-q + Tlogic + Tsetup B. Tclk - Tskew ≥ Tck-q + Tlogic + Tsetup C. Tclk ≥ Tck-q + Tlogic - Tsetup D. Tlogic ≥ Tsetup + Tho…...

深耕区域数字生态,智森传媒赋能本地中小企业破局增长

在本地生活流量红利消退、行业内卷加剧的当下&#xff0c;中小企业数字化转型已不是选择题&#xff0c;而是生存题。十堰智森网络传媒立足本土市场&#xff0c;以技术研发为根基&#xff0c;以区域获客为核心&#xff0c;以数字人直播为抓手&#xff0c;为中小企业搭建全链路数…...

解放双手:5分钟快速上手智慧树自动化学习工具的完整指南

解放双手&#xff1a;5分钟快速上手智慧树自动化学习工具的完整指南 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 你是否厌倦了每天重复点击智慧树视频的枯燥…...

Capital许可排队严重?不想买新许可,闲置回收立即可用

我去年在做项目时&#xff0c;客户说他们Capital许可证池天天爆队&#xff0c;新增用户连基本的算力都抢不到。当时我就琢磨&#xff0c;许可证回收这事儿到底有多重要&#xff1f;去年底我带着团队做了一个实验&#xff0c;直接把闲置许可证利用率干到45%&#xff0c;127个许可…...