通过Slf4j中的MDC实现在日志中添加用户IP功能

一、slf4j中MDC是什么
slf4j除了trace、debug、info、warn、error这几个日志接口外,还可以配合MDC将数据写入日志。换句话说MDC也是用来记录日志的,但它的使用方式与使用日志接口不同。

在使用日志接口时我们一般这么做

  log.debug("log debug");

MDC从使用方式上有些不同,我对它的理解是MDC可以将一个处理线程中你想体现在日志文件中的数据统一管理起来,根据你的日志文件配置决定是否输出。
比如以下但不限于以下场景可以考虑使用MDC来达到目的
1.我们想在日志中体现请求用户IP地址
2.用户使用http客户端的user-agent
3.记录一次处理线程的日志跟踪编号(这个编号目的是为了查询日志方便,结合grep命令能根据跟踪编号将本次的处理日志全部输出)

二、功能实现

public class LogInterceptor implements HandlerInterceptor {private final static String IP_KEY = "ip";@Overridepublic void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {// 删除用户IPMDC.remove(IP_KEY);}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mav)throws Exception {}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {String ip = IPUtils.getIpAddr(request);MDC.put(IP_KEY, ip);return true;}
}

三、参考资料

slf4j中的MDC-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echaerts图例自动滚动并隐藏翻页按钮

效果图 代码 legend: {itemHeight: 14,itemWidth: 14,height: "300", //决定显示多少个// 通过 CSS 完全隐藏翻页按钮pageButtonItemGap: 0,pageButtonPosition: end,pageIconColor: transparent, // 隐藏翻页按钮pageIconInactiveColor: transparent, // 隐藏翻页按…

利用ffmpeg从视频中提取纯音频和纯视频且再合成视频

1. 提取纯音频 ffmpeg -i rawVideo.mp4 -acodec copy -vn vnVideo.aac 或者 ffmpeg -i rawVideo.mp4 -c:a copy -vn vnVideo.aac-acodec copy: 音频只拷贝,不编解码 -vn: v代表视频,n代表no,无视频的意思2. 提取纯视频 ffmpeg -i rawVideo.mp4 -vcodec…

数据资产入表-数据治理-指标建设标准

前情提要:数据价值管理是指通过一系列管理策略和技术手段,帮助企业把庞大的、无序的、低价值的数据资源转变为高价值密度的数据资产的过程,即数据治理和价值变现。上一讲介绍了标签标准设计的基本逻辑和思路。数据资产入表-数据治理-标签设计…

【外汇天眼】胜率提升秘籍:洞悉外汇市场五大参与者的角色与功能

外汇市场是全球最活跃、流动性最高的金融交易市场,每日交易量在6万亿到11万亿美元之间。它的日交易量是全球股票市场的27倍,全球期货市场的12倍,全球债券市场的7倍,超过了全球所有金融产品日交易量的总和。随着全球金融一体化的进…

gitee: fatal: Authentication failed for ‘https://gitee.com/xxx‘

推送更新到你的某个项目时,会遇到以下报错: $ git push origin master remote: [session-6841d990] xxx: Incorrect username or password (access token) fatal: Authentication failed for https://gitee.com/xxx/vue3-element-admin.git/执行以下命令…

混剪素材哪里找?分享几个热门混剪素材下载网站

在短视频和新媒体的世界里,高质量的混剪素材是吸引观众的关键。今天,我将为大家详细介绍几个优秀的素材网站,它们不仅资源丰富,而且完全满足新媒体创作者的需求。这篇文章将帮助你理解如何有效利用这些平台提升你的视频创作。 蛙…

Crosslink-NX器件应用连载(9): USB3.0相机

作者:Hello,Panda 大家晚上好,很久没有分享设计案例了,实在是太忙了,精力十分有限,今天分享一个CrosslinkNX系列器件用作USB3.0相机的案例。其实就是分享一下使用CrosslinkNX器件设计USB3.0相机主要有两种…

Freeswitch-soundtouch-变声开发

文章目录 一、介绍二、安装soundtouch2.1 源码安装方式(推荐)2.1.1下载源码2.1.2解压2.1.3 编译2.1.4 迁移(可选) 2.2 apt-get 安装 三、使用3.1 终端使用3.2 Freeswitch使用3.2.1编译Freeswitch的mod_soundtouch3.2.2启用 mod_so…

OpenCV学习(4.4) 平滑图像

1.目的 在本教程中将学习: 用各种低通滤波器模糊图像。对图像应用自定义过滤器(二维卷积)。 在图像处理中,平滑图像是一种去噪和模糊技术,用于减少图像中的噪声和细节,使得图像看起来更加平滑。平滑处理…

生信学习入门常见错误可能的原因分类总结和求助指南

文件或目录找不到 这是常见问题,常见提示有 No such file or directory Error in file(file, “rt”):无法打开链接 Fatal error: Unable to open file for reading (seq/WT1_1.fq) Fatal error: Unable to read from file (C:Program file/Git/usea…

Debian的常用命令

Debian作为一个稳定、安全且高效的Linux发行版,被广泛应用于服务器和桌面操作系统中。对于系统管理员和开发者来说,熟练掌握Debian的常用命令能够大大提升工作的效率和系统的管理水平。本文将详细介绍一些常见且实用的Debian命令,帮助新手更好地管理和操作Debian系统。 系统…

Nginx实战:nginx支持带下划线的header

nginx对header 的名字字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,后端服务就获取不到该请求头。 为了支持header带下划线的参数,可以在http内或者server内设置如下参数…

【Python入门系列】第八篇:Python中GUI编程和图形界面设计

文章目录 前言一、Tkinter、PyQt和wxPython库简单使用1、Tkinter简单使用2、PyQt简单使用3、wxPython简单使用 二、Tkinter、PyQt和wxPython库实现计算器1、Tkinter实现计算器2、PyQt实现计算器3、wxPython实现计算器 三、Tkinter、PyQt和wxPython库简单QQ聊天1、Tkinter实现QQ…

蓝牙AOA基站定位的优势与应用前景

在科技飞速发展的今天,人们对于定位技术的精度和稳定性要求越来越高。蓝牙AOA基站定位技术应运而生,以其高精度和低通信开销的特点,正逐渐改变我们对室内定位的认知。本文我们就一起来具体了解一下关于蓝牙AOA基站定位技术的优势及应用前景&a…

数据结构(3)栈、队列、数组

1 栈 1.1 栈的定义 后进先出【LIFO】 1.2 基本操作 元素进栈出栈 只能在栈顶进行!!! 经常考的题: 穿插的进行进栈和出栈 可能有多个选项 1.3 顺序栈 1.3.1 初始化 下标是从0开始的 1.3.2 进栈 更简单的写法: 1.3…

JavaScript 闭包 css html

闭包 什么是闭包 JavaScript的作用域包括全局作用域和函数作用域和块级作用域。 在JavaScript作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量,并且可以获得包含当前作用域的外层作用域下的变量,反之则不能…

纯血鸿蒙开发实战—如何开发出一个鸿蒙购物应用!

HarmonyOS 支持应用以 Ability 为单位进行部署,Ability 可以分为 FA(Feature Ability)和 PA(Particle Ability)两种类型。 本篇 Codelab 将会使用 UI 组件开发出一个 HarmonyOS 购物应用。 HarmonyOS 为开发者提供了…

TikTok广告投放攻略——广告类型详解

TikTok广告是品牌或创作者付费向特定目标受众展示的推广内容(通常是全屏视频)。TikTok 上的广告是一种社交媒体营销形式,通常旨在提高广告商的知名度或销售特定产品或服务。 就 TikTok广告投放而言,其组织层级分为三个层级&#x…

行心科技与研草堂携手,共绘医康养新生态的食疗养生蓝图

在健康产业蓬勃发展的当下,广州市行心信息科技有限公司(以下简称“行心科技”)与研草堂携手合作,共同亮相于2024年第34届健博会暨中国大健康产业文化节。现场,行心科技董事长林泳强、顾问王志文老师与研草堂的厂商齐聚…

@EnableResourceServer资源服务注解源码分析

文章目录 学习参考EnableResourceServer概要ResourceServerConfiguration属性定义configure(HttpSecurity)ResourceServerSecurityConfigurerinit(HttpSecurit)configure(HttpSecurity) 学习参考 Spring Security框架配置运行流程完整分析 - 【必看】 Security OAuth2 授权 &…