多线程环境下使用log4j输出各线程的标识,区分各线程输出的内容

在多线程环境下,我们可能需要输出很多信息,每个线程产生的日志信息可能都是类似的,我们如何区分出哪些信息是同一个线程输出的呢?其实log4j已经提供了多种实现方式:

1.使用PatternLayout,在设定输出格式的时候增加%t参数,这样会输出各个线程的线程名称,这样我们就可以根据线程名称区分哪些内容是同一个线程输出出来的。

2.使用NDC,也是基于PatternLayout,在设定输出格式的时候增加%x参数,不过需要再代码中增加相关内容,再线程开始的时候,调用 NDC.push("标识信息");在这之后,所有的输出的日志内容%x的位置都会输出指定的"标识信息",这样也能区分开不同线程输出的内容,NDC内 部是各堆栈实现的,所以可以多次调用push方法加入"标识信息",然后调用pop方法"弹出"当前表示信息,使上一个标识信息可用,最后,载线程处理结 束先,要再次调用NDC.remove();方法,清空堆栈信息。

3.使用MDC,和NDC类似,都是基于PatternLayout,的,需要使用%X{paramName}参数(注意MDC使用大写 'X',NDC使用小写'x'),不过MDC可以同时指定多个%X,例如:%X{param1} %X{param2},在程序中处理的时候也需要代码配合,开始的时候需要调用MDC.put(String key,Object

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值