0.前言

服务器日志打印时是按时间节点依次打印,在请求数过多时,很男凭借肉眼判断出一次请求的上下文。由此引出,如果每个request都带有唯一的标识,查询日志上下文时是不是就很方便.

1.log4j自带的NDC和MDC

1.1.NDC(Nested Diagnostic Context)

NDC采用栈的机制存储上下文,线程独立的,子线程会从父线程拷贝上下文。:
方法:

  • NDC.push(message);保存信息
  • NDC.pop();删除栈顶消息
  • NDC.remove();清除所有消息

log4j配置:[%x]

1.2.MDC(Mapped Diagnositc Context)

MDC采用Map的方式存储上下文,线程独立的,子线程会从父线程拷贝上下文。
方法:

  • MDC.put(key, value);保存信息
  • MDC.get(key);获取消息
  • MDC.remove(key);删除消息
  • MDC.clear();清空消息

log4j配置:%X{key} 或者 %X 输出全部消息

2.使用


一般来讲会把 唯一id在开始时加入上下文,在结束时删除,所以一般会配置两个filter,请求开始时push/put,请求结束时,pop,使用NDC时,要使用NDC.remove()方法。

MDC和NDC(log4j打印自定义属性)相关推荐

  1. log4j打印出线程号和方法名

    最近写了一些Java多线程的程序,学到log4j打印出线程号和方法名,分享一下~ 使用 %t 就可以打印线程名称,这样开发的时候就可以看到线程执行情况了: 先参考实现配置,如果想要更加详细的配置,可加 ...

  2. mybatis结合log4j打印SQL日志

    mybatis结合log4j打印SQL日志 1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,需要结合log4jdbc-log4j2就可以完整的输入SQL的调试信息 ...

  3. centos linux 系统上 log4j打印的时间与CST时间差8小时的解决方法

    centos linux 系统上 log4j打印的时间与CST时间差8小时的解决方法 参考文章: (1)centos linux 系统上 log4j打印的时间与CST时间差8小时的解决方法 (2)ht ...

  4. mysql log4jlogger_mybatis结合log4j打印SQL日志

    mybatis结合log4j打印SQL日志 1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,须要结合log4jdbc-log4j2就能够完整的输入SQL的调试信息 ...

  5. mybatis配置log4j打印sql日志

    mybatis配置log4j打印sql日志 前提是你已经配置好了log4j. 在mybatis的配置文件中设置 <?xml version="1.0" encoding=&q ...

  6. log4j 打印线程号配置_log4j配置参数

    Log4j主要组件: 1.根类别(在类别层次结构的顶部,即全局性的日志级别) 配置根Logger,其语法为: log4j.rootLogger = [level] , appenderName, ap ...

  7. log4j 打印线程号配置_Log4J日志整合及配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  8. slf4j+log4j打印日志,控制台无日志输出

    slf4j+log4j 实现日志打印 项目场景: 今天看以前的项目,运行起来报错,项目日志对于项目是很重要的,但是控制台没有打印出来日志,运行起来报错的问题先放一放,先把日志的问题解决了,我项目中有l ...

  9. log4j打印mybatis sql语句

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis默认使用有slf4j 必须加上依赖 <dependency> <groupId>org. ...

  10. mybatis开启log_mybatis使用spring-druid数据源连接池配置log4j打印sql语句以及开启监控平台...

    杂七杂的杂 作为程序员,开发工程中,一套利于测试或者监控的工具很重要,mybatis默认没有提供log4j的打印sql语句的配置. 这对于开发rest服务,提供接口的开发者而言,是在很不好做,再加上m ...

最新文章

  1. 管线命令 cut grep
  2. PHPMailer 发送邮件
  3. vue 2.0 :key的作用
  4. 5界面怎么做窗帘拉动的效果_别让土味窗帘毁了你的家
  5. 今天在cnblog开博啦
  6. 移动IM开发指南1:如何进行技术选型
  7. vmware 中win7无法上网
  8. Java 中 this 和 super 的用法总结
  9. Oracle创建表_01
  10. OpenCV与图像处理学习九——连通区域分析算法(含代码)
  11. 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
  12. 计算机动漫与游戏制作画画教学,科普下动漫制作必须会画画吗
  13. qq批量登录软件_20191228分享,雪藏了几天的软件合集分享,心痛一小编,开心一大家。...
  14. 不忘初心,砥砺前行;只争朝夕,不负韶华——国家开放大学2018年度首届优秀青年教师总结报告
  15. 不要老盯着存储,存储的价值在于数据流:Filenet
  16. kettle软件的使用
  17. python 视频教程推荐_求各位大佬推荐Python学习视频教程?
  18. Assets文件操作
  19. VR中的9轴传感器(重力加速度/陀螺仪/磁力计)
  20. Javascript:谈谈JS的全局变量跟局部变量(转zyz511919766)

热门文章

  1. 流利式货架的应用特点
  2. 深度学习(17)机器学习常用的损失函数
  3. 《After Effects CC 中文版超级学习手册》课程教学(23)——附录 AE CC 快捷键
  4. VSTO C#开发禁止WORD中文字编辑
  5. 暗含玄机,诺基亚的品牌回归之路!
  6. 系统集成项目管理工程师是计算机二级吗?
  7. 方丈西游记:戴着Google Glass能看见佛吗
  8. [2017年六月四级春季技巧拔高直播课] 四级翻译特训1
  9. 机器学习必知的15大框架
  10. 从头开始搭建一个深度学习项目