博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4j中MDC用法
阅读量:6494 次
发布时间:2019-06-24

本文共 1529 字,大约阅读时间需要 5 分钟。

在记录日志的时候,我们可能有这种需求,对于每个记录除了知道日志信息外,也要当前登录用户的信息。
可以这样解决:使用log4j的MDC
在web.xml加入 Filter:
<filter>
  <filter-name>set log4j MDC for log2userId</filter-name>
  <filter-class>UserFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>set log4j MDC for log2userId</filter-name>
  <url-pattern>
public class UserFilter implements Filter {
    
    private static final Logger logger = Logger.getLogger(UserFilter.class);
    private final static String DEFAULT_USERID="anonymous";
 
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req=(HttpServletRequest)request;
        HttpSession session= req.getSession();
        if (session==null){
            MDC.put("userId",DEFAULT_USERID);  
        }
        else{
            Customer customer=(Customer)session.getAttribute("customer");
            if (customer==null){
                MDC.put("userId",DEFAULT_USERID);
            }
            else
            {
                MDC.put("userId",customer.getLoginid());
            }
        }
        logger.info("test for MDC.");
        
        chain.doFilter(request,response);
    }
    public void init(FilterConfig fc) throws ServletException {
        
        // do nothing
        
    }
    public void destroy() {
//         do nothing
    }
}
在log4j.properties中加入新配置,示例使用jdbc存储
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.db.BufferSize=100
log4j.appender.db.URL=jdbc:ulr
log4j.appender.db.driver=org.hsqldb.jdbcDriver
log4j.appender.db.user=sa
log4j.appender.db.password=
log4j.appender.db.sql=INSERT INTO LOG4J_MSG (LOGINID,PRIORITY,LOGDATE,CLASS,METHOD,MSG) VALUES('%X{userId}','%p','%d{yyyy-MM-dd HH:mm:ss}','%C','%M','%m')
%X{userId}:就是取出MDC的代码了

转载地址:http://jskyo.baihongyu.com/

你可能感兴趣的文章
HTML标签 转 NSAttributedString
查看>>
vue实现根据多选框按钮,动态给百度地图添加和删除相应的覆盖物
查看>>
前奏交响曲
查看>>
深入理解Spring系列之七:web应用自动装配Spring配置
查看>>
用python手刃Leetcode(9):回文数【简单题】
查看>>
SpringFlux入门(上篇)
查看>>
Bean注解方式知识点1
查看>>
centos7 hive 单机模式安装配置
查看>>
记一次小白在centos下安装nginx
查看>>
swift unowned和weak的使用
查看>>
面向对象设计原则
查看>>
异步编程 101: 是什么、小试Python asyncio
查看>>
html中在线预览pdf文件之pdf在线预览插件
查看>>
MongoDB入门篇
查看>>
Java 集合08之 ListLinkedList, ArrayList等使用场景和性能分析
查看>>
短期怎么学会云计算?新手学习云计算的规划
查看>>
支配vue框架之模版语法 v-html
查看>>
英伟达发布超强大新型芯片用于人工智能
查看>>
以太坊社区激励金计划:支持开发者利用去中心化技术改变世界
查看>>
详细精确阐述jsBridge执行流程的文章
查看>>