MDCFilter

package com.common.filter;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.context.annotation.Configuration;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.UUID;

@Configuration
@Slf4j
public class MDCFilter implements Filter {
    private static final String SESSION_KEY = "sessionId";
    @Override
    public void init(FilterConfig filterConfig) {
        //

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        mdc(httpServletRequest);
        filterChain.doFilter(httpServletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        //
    }

    public void mdc(HttpServletRequest httpServletRequest){
        String url = httpServletRequest.getRequestURI();
        MDC.put("RequestIP",httpServletRequest.getRemoteAddr());
        MDC.put("Module",url);
        MDC.put("RemoteHost",httpServletRequest.getRemoteHost());
        MDC.put("ServerPort",httpServletRequest.getServerPort()+"");
        MDC.put("ServerIP",httpServletRequest.getLocalAddr());
        RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
        String name = runtime.getName();
        MDC.put("ProcessID ",name.substring(0, name.indexOf('@')));
        MDC.put("Thread", Thread.currentThread().getName());

        try{
            String sessionId = UUID.randomUUID().toString().replace("-", "");
            MDC.put(SESSION_KEY, sessionId);
        }catch (Exception e){
            log.warn("-------------set SESSION_KEY 异常---------------", e);
        }
    }
}

Original: https://www.cnblogs.com/tiancai/p/16489463.html
Author: 甜菜波波
Title: MDCFilter

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553645/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • B树-插入

    B树系列文章 1. B树-介绍 2. B树-查找 3. B树-插入 4. B树-删除 插入 根据B树的以下两个特性 每一个结点最多有m个子结点 有k个子结点的非叶子结点拥有 k −…

    技术杂谈 2023年6月21日
    095
  • NatTypeTester

    NatTypeTester https://opensourcelibs.com/ https://github.com/HMBSbige/NatTypeTester/releas…

    技术杂谈 2023年5月30日
    068
  • 防止表单重复提交思路分析

    出现重复提交的场景一般是在网速比较慢,服务器返回时间较长,导致用户以为没有提交成功或者习惯性的多点几次提交按钮。开发中必须杜绝重复提交问题。 一、出现重复提交表单的场景 场景一:在…

    技术杂谈 2023年7月11日
    092
  • IntelliJ隐藏特定后缀文件

    preference- Original: https://www.cnblogs.com/pengyingh/p/10521234.htmlAuthor: pengyinghTi…

    技术杂谈 2023年5月30日
    0102
  • 不允许脏主选举导致Broker被强制关闭

    https://www.cnblogs.com/wangbin/p/10647997.html https://blog.csdn.net/Alex_Sheng_Sea/artic…

    技术杂谈 2023年5月31日
    090
  • 【翻译】2序列化过滤

    来源:Java官方文档 译者的话 由于译者的英文水平和编程水平都不高,不理解原文中的一些概念,一些句子也不知道如何翻译。对不知如何翻译的内容,译者使用了机器翻译,并在译文后面的括号…

    技术杂谈 2023年7月24日
    091
  • 如何搭建android源代码repo仓库

    .版本: v0.3作者:河东西望日期:2022-7-5. 如果你的开发是基于AOSP源码来建仓,那么搭建repo服务器和部署自己的repo仓库就是非常必要的工作了。 现实中很多公司…

    技术杂谈 2023年6月21日
    087
  • 蓝牙搜索

    /******************************************************************** created: 2010/01/29 …

    技术杂谈 2023年5月31日
    0101
  • EBS多语言小地球

    posted @2018-06-03 10:24 全威儒 阅读(565 ) 评论() 编辑 Original: https://www.cnblogs.com/quanweiru/…

    技术杂谈 2023年6月1日
    080
  • vmstat命令详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看L…

    技术杂谈 2023年5月31日
    0103
  • 从Spring中学到的【1】–读懂继承链

    最近看了一些 Spring 源码,发现源码分析的文章很多,而底层思想分析的文章比较少,这个系列文章准备总结一下Spring中给我的启示,包括设计模式思想、SOLID设计原则等,涉及…

    技术杂谈 2023年7月25日
    0115
  • redis基本操作

    什么是redis redis是一个高性能的key-value存储的NoSQL数据存储系统。为什么是nosql——大数据下需要更好的性能 补充:1、一共有15个数据库,select …

    技术杂谈 2023年7月24日
    065
  • 熟悉SandBoxie开源代码优先 沙盒

    熟悉SandBoxie开源代码优先 原理引用官方网站的一段话:电脑就像一张纸,程序的运行与改动,就像将字写在纸上。而Sandboxie就相当于在纸上放了块玻璃,程序的运行与改动就像…

    技术杂谈 2023年5月31日
    066
  • Chrome浏览器对标签进行整理和分组

    首先要升级到比较新的chrome版本,比如要81版本以上才可以 在打开页面的title上右击,弹出选项”Add Tab to Group”添加标签到分组,选…

    技术杂谈 2023年5月31日
    0131
  • tex—就是tex文件,这个地球人都知道,是文章所在的主要文件

    本demo中包括两个文件example.tex和myref.bib,用的时候參照改即可啦。 example.tex:用的时候将’\’和后面文字中间的空格去掉…

    技术杂谈 2023年5月31日
    068
  • [转帖]【科普】ICC GCC傻傻分不清?聊一聊编译器那些事儿

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月30日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球