1.首先实现一个interceptor,在请求开始的时候MDC put一个Session标志,interceptor结束的时候remove掉
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.MDC;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class SessionInterceptor extends HandlerInterceptorAdapter {/*** 会话ID*/private final static String SESSION_KEY = "sessionId";@Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {// 删除
        MDC. remove(SESSION_KEY);}@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {}@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {// 放SessionIdString token = TokenUtil. java.util.UUID.randomUUID().toString();MDC. put(SESSION_KEY, token);return true;}
}

2.然后在logback相应的配置中加上 seesionId的配置就可以了
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="log.base" value="./log/logback" /><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern> %X{sessionId} %date [%thread] %-5level %logger{80} - %msg%n</pattern></encoder></appender><appender name="logfile"class="ch.qos.logback.core.rolling.RollingFileAppender"><File> ${log.base}.log</File ><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern> ${log.base}.%d{yyyy -MM-dd}.log.zip </FileNamePattern></rollingPolicy><encoder><pattern> %X{sessionId} %date [%thread] %-5level %logger{80} - %msg%n</pattern></encoder></appender><logger name="com.sample" level="TRACE" /><root><level value="INFO" /><appender-ref ref="stdout" /><appender-ref ref="logfile" /></root>
</configuration>

3.日志打出的时候就会有可以标识区分不同客户端的请求了,用前面不同的token区分
e6668b68-ee47-4cde-b673-25ed9bb74f1e 2014-04-09 16:31:14,579 [qtp14850080-27] INFO  o.c.a.f.i.AuthInterceptor - GET:/project
c3b84462-81c6-49f7-923b-d8ba48c53c07 2014-04-09 16:31:31,295 [qtp14850080-27] INFO  o.c.a.f.i.AuthInterceptor - GET:/feedbacks
b0e0f1fe-f30a-42b2-a103-e70a108561b7 2014-04-09 16:31:32,254 [qtp14850080-22] INFO  o.c.a.f.i.AuthInterceptor - GET:/feedbacks
a58ed619-c2e0-4b71-9c45-995a78c1b602 2014-04-09 16:31:42,788 [qtp14850080-29] INFO  o.c.a.f.i.AuthInterceptor - GET:/project
70de174a-5a05-41c6-a8b4-f17fcd33be5c 2014-04-09 16:31:43,537 [qtp14850080-22] INFO  o.c.a.f.i.AuthInterceptor - GET:/project
f3efb2d4-f361-4c6b-bab6-16c8476c8dd0 2014-04-09 16:31:47,157 [qtp14850080-26] INFO  o.c.a.f.i.AuthInterceptor - POST:/project
f3efb2d4-f361-4c6b-bab6-16c8476c8dd0 2014-04-09 16:31:47,161 [qtp14850080-26] INFO  o.c.a.f.i.ProjectController - >> create() > GOT PARAMS 'Project [name=url, abstractContent=a, token=null]','(POST /project)@12571381 org.eclipse.jetty.server.Request@bfd2f5'

参考:http://logback.qos.ch/manual/mdc.html#autoMDC

转载于:https://www.cnblogs.com/dumuqiao/p/3654702.html

LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]相关推荐

  1. 使用MDC增强日志记录

    文章目录 (一)日志框架 1. 日志框架介绍和选择 2. 原理介绍 3. SpringBoot日志框架 (二)使用MDC增强日志记录 1. 介绍 2. 普通示例 3. 在Log4j中使用MDC 4. ...

  2. linux记录用户命令的日志是,用日志记录Linux用户执行的每一条命令

    用日志记录Linux用户执行的每一条命令 用日志记录Linux用户执行的每一条命令 工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案.这个方案会在每 ...

  3. 如何通过7个Logback调整立即改善Java日志记录

    基准测试可帮助您发现Logback在压力下的性能 日志记录对于服务器端应用程序是必不可少的,但这是有代价的. 令人惊讶的是,微小的更改和配置调整对应用程序的日志记录吞吐量有多大影响. 在这篇文章中,我 ...

  4. springboot日志写入mysql_44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】

    学院中有Spring Boot相关的课程!点击「阅读原文」进行查看! SpringSecurity5.0视频:http://t.cn/A6ZadMBe Sharding-JDBC分库分表实战: 在开发 ...

  5. 【Spring MVC拦截器+logback日志+自定义注解】实现用户鉴权登陆和访问日志记录

    摘要说明: 项目中经常这样的需要 1. 登陆鉴权:比如用户浏览器发出某个请求的时候我们需要判断这个用户是否已经登陆,也就是cookie中是否有他的登陆信息. 2. 访问日志记录:用户访问请求的时候我们 ...

  6. SpringBoot 项目使用 SLF4J+logback 进行日志记录,来增强可维护性

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:云深不知处 blog. ...

  7. 使用Spring配置LogBack日志记录

    LogBack是由Log4j的同一作者创建的用于记录日志的API(较新的实现,它类似于新版本),在本文中,我将展示如何在Spring项目中对其进行集成和使用. 在本教程中,我假设您正在使用一个简单的S ...

  8. Spring boot logback的使用(日志记录)

    1 在spring boot中已经自动包含了logback的jar包,如果不是spring boot需要在maven中导入依赖 <!-- https://mvnrepository.com/ar ...

  9. logback日志pattern_003、Spring Boot使用slf4j进行日志记录

    在开发中,我们经常使用 System.out.println() 来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗.我们实际项目中使用的是 slf4j 的 logb ...

最新文章

  1. 网页设计和用户界面设计
  2. 只能在堆或只能在栈上分配内存的类
  3. 时间序列(三)滑动窗口
  4. @Transactional-同一个类中方法自调,调用方法事物失效
  5. linux sort命令
  6. AWS — AWS 上的 DevOps
  7. cassert与NDEBUG,_DEGUG
  8. python的for语句有几种写法_Python if 和 for 的多种写法
  9. 疯狂秀才权限管理系统,开源了
  10. const_iterator,const 迭代器
  11. JavaScript 变量提升
  12. java开发_mysql中获取数据库表描述_源码下载
  13. Hessian学习总结(二)——使用hessian上传文件
  14. ElementUI 标签组件
  15. 【五线谱】调号 ( 调号标识位置 | 调号标记列表 | A 大调标识原理 | F、C、G 位置标记升号 # | F 大调标识原理 | B 位置标记降号 b )
  16. ecilpse写html图片,eclipse怎么导入图片
  17. mysql复制表结构创建新表
  18. 谈谈EMC Unity名字侵权官司,送竞争分析点评
  19. 计算机画图橡皮擦怎么扩大,大师为你演示win7系统画图工具中改变橡皮擦大小的图文教程...
  20. 使用Android studio 开发xposed插件

热门文章

  1. matlab如何记录时间,求助:在MATLAB里如何输入时间序列中的时间
  2. java treeset排序_java TreeSet的排序之自然排序
  3. 8分频verilog线_解密POE交换机供电秘密,8芯网线断芯不再害怕!
  4. lua游戏脚本实例源码_Lua脚本引擎教程(六):饥荒Lua脚本系统
  5. const修饰成员函数总结
  6. 2022年考研数据结构_5 树
  7. 栈的出入js实现_js 实现栈的结构
  8. Hbase Region拆分入门
  9. Spark Row对象入门到熟悉
  10. 【323天】每日项目总结系列061(2017.12.25)