log4j2的MDC应用配置

MDC的概念: Manufacturing Data Collection 生产数据实时采集和分析。
有时实际开发过程没有发现的BUG在生产环境才出现,需要到生产环境去分析实时日志来进行BUG跟踪;LOG4J2提供了MDC功能可以将特定用户的日志单独处理输出到特定的文件中。

配置关键字ThreadContext  ,DynamicThresholdFilter  ,ThreadContextMapFilter  

1.DynamicThresholdFilter 从整体上控制日志默认输出级别,对于特定的值可以调整日志级别
 <!--ThreadContext.put("loginId", "User1"); 除了User1之外其他的日志都默认是ERROR级别,USER1相关的日志是DEBUG级别  -->

 <DynamicThresholdFilter key="loginId"
  defaultThreshold="ERROR" onMatch="ACCEPT" onMismatch="DENY">
  <KeyValuePair key="User1" value="DEBUG" />
 </DynamicThresholdFilter>

2.ThreadContextMapFilter 控制文件的记录内容,符合条件才记录到文件,其他都拒绝写入日志
<!-- 我只记录USER1的日志信息,找生产环境BUG用的。 -->
  <File name="testUserLog" fileName="target/testUserLog2" append="true">
      <ThreadContextMapFilter onMatch="ACCEPT"
    onMismatch="DENY">
    <KeyValuePair key="loginId" value="User1" />
   </ThreadContextMapFilter>
   <PatternLayout   pattern="%n%t %-5p %c{2} MDC%X - %m" />
  </File>

3.在WEB应用中可以在过滤器filter中加入以下代码:
ThreadContext.put("loginId",Session.getAttribute("userId")); //userId代表的就是登陆会话的工号信息
如果是APP,可以使用代理模式(如果用SPRING,可以使用aop,如果没有SPRING,可以使用CGLIB或者其他)来实现

代码工程基于MAVEN,资源下载地址:http://note.youdao.com/share/?id=75707f4ae039b0d1e2f2cf46c8342d34&type=note
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值