什么是日志MDC?一句话简单解释MDC

打印 上一主题 下一主题

主题 950|帖子 950|积分 2850

官方文档:Chapter 8: Mapped Diagnostic Context
为什么要写这篇文章呢?因为目前互联网上全是从官方文档里机器翻译然后转载的。但现实上我只是想知道什么是MDC,一句话解释一下MDC就可以了。
以下内容是我本人对MDC的简单总结
MDC的字面意思:Mapped Diagnostic Context 映射诊断上下文
通俗的说就是在打印日志的时间定义一个占位符%X{MDC键名称},然后在你自己写的代码中使用MDC.put("MDC键名称", "内容")方法给占位符赋值,在终极打印的时间,日志框架就会自动带上你指定的内容。(有点像字符串拼接)
MDC可以理解为一个map,只不外这个map的作用域是单个线程,且线程安全。
以下为一个最简单的例子:
java代码:
  1. package top.milkbox.modular.customTest;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import org.slf4j.MDC;
  5. import top.milkbox.modular.controller.TestController;
  6. /**
  7. * 创建时间: 2024-12-11 上午 11:38
  8. *
  9. * @author milkbox
  10. */
  11. public class CustomTest {
  12.     private static final Logger log = LoggerFactory.getLogger(TestController.class);
  13.     public static void main(String[] args) {
  14.         // 定义一个键值对,键名为custom.info,键值为王多鱼
  15.         MDC.put("custom.info", "王多鱼");
  16.         // 正常打印日志
  17.         log.info("购买脂肪险,让王多鱼倾家荡产");
  18.         // 设置打印格式为:%X{custom.info} - %m%n
  19.         // 最终打印:王多鱼 - 购买脂肪险,让王多鱼倾家荡产
  20.     }
  21. }
复制代码
日志配置文件logback.xml(对于如何使用日志的配置文件,我这里就不解释了)。这里重点注意:%X{custom.info} - %m%n。我们使用%X{MDC键名称}这个占位符来定义内容表现的位置
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.     <appender name="STDOUT" >
  4.         <encoder>
  5.             
  6.             
  7.             <pattern>%X{custom.info} - %m%n</pattern>
  8.             <charset>utf-8</charset>
  9.         </encoder>
  10.     </appender>
  11.     <root level="info">
  12.         <appender-ref ref="STDOUT"/>
  13.     </root>
  14.     <logger name="top.milkbox" level="info" additivity="false">
  15.         <appender-ref ref="STDOUT"/>
  16.     </logger>
  17. </configuration>
复制代码
运行main函数,结果如下:

这是MDC最简单的用法,假如想看更具体的可以去官方文档学习。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表