LOG4J2-MDC-全链路跟踪等功能研究

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: LOG4J2-MDC-全链路跟踪等功能研究

MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,内部是基于threadLocal实现,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当开启isThreadContextMapInheritable属性后,当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,日志框架会自动从 MDC中获取所需的信息,MDC 的内容需要由程序在适当的时候保存进去。

MDC能满足如下需求:

  1. 在做日志链路跟踪时,如何在多线程之间进行上下文传递
  2. 生产环境中,如何让某个玩家ID或者ID列表打印出DEBUG日志,其他玩家还是INFO
  3. 生产环境中,如何让某个玩家ID或者ID列表的日志打印到独立的文件

背景:

项目中使用log4j2作为日志系统,然而在高并发的情况下,多个玩家的请求的日志链路参杂在一起,要跟踪某个用户一次的请求操作所有日志是很麻烦的,要根据不同玩家打印不同级别的根本就是做不到的。

log4j2 的MDC ThreadContext 和CloseableThreadContext 就提供了相关功能,

API说明:

clear()
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
|
Java 测试技术
slf4j的log.warn()的参数问题研究
slf4j的log.warn()的参数问题研究
318 0
|
监控 数据库 Windows
Log“.NET研究”4Net 全方位跟踪程序运行
  前端日子自己写了一个简单的日志跟踪程序,现在目前正在做的一个项目中使用以便于跟踪程序异常和运行状况,但是被否认了!可能是没有权威性,于是自己总结了一下Log4net日志跟踪系统,这里分享大家学习一下。
1043 0
|
C#
小巧的日志记录组件 - 开源研究系列文章
  今天给大家带来一个小巧的日志记录组件LogHelper。这个组件是由Log4Net这个组件的由来而来的,不过只是写入.txt文本文件而已。如果能够对大家的项目有帮助那就更好了。   首先,打开.SLN解决方案,添加引用日志组件。
1002 0
|
Unix
深入研究Clang(九) Clang代码阅读之打log读流程2
继续上一篇,同样的hello.c,同样的执行过程,只不过继续添加了一些log信息,而且对代码进行了更近一步的挖掘。先看输入和输出的log信息(前半部分): shining@shining-VirtualBox:~/llvm-3.
1440 0
深入研究Clang(八) Clang代码阅读之打log读流程1
这个过程简单的分为几步。 第一步:写一个简单的小程序,hello.c。内容如下: #includeint main() {  printf("Hello world!\n");} 第二步:找出如何在LLVM里面输出信息,最后选择采用llvm::errs(),等于采用了LLVM的错误机制。
1222 0
|
监控 网络协议
iptables学习与研究(使用LOG记录失败日志)
原文地址: http://blog.csdn.net/fafa211/article/details/2307581   通常情况下,iptables的默认政策为DROP,不匹配的数据包将被直接丢弃。
838 0
下一篇
无影云桌面