MDC和NDC(log4j打印自定义属性)

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()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值