美文网首页Java web
关键操作流水记录方案

关键操作流水记录方案

作者: 雨夏_ | 来源:发表于2019-01-12 11:18 被阅读7次

    实现原理

    处理用户请求是以线程的方式进行处理的,可以在拦截器中,向MDC容器中写入可用于日志追踪的变量,在打印日志的时候取出相应的内容打印。
    MDC:MDC ( Mapped Diagnostic Contexts ),它是一个线程安全的存放诊断日志的容器。他底层是通过使用InheritableThreadLocal变量来保证线程安全的。
    实现方式:
    1.首先在intercpet记录traceid、userid等可用于日志追中的变量

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        MDC.put("traceid",UUID.randomUUID().toString());
        MDC.put("sessionid", UserSessionUtils.getSessionId());
        MDC.put("userid", UserSessionUtils.getCurrentUserId());
        return true;
    }
    

    2.在打印日志的时候从MDC中取出相应的变量,通过%X或者%mdc

    <encoder>
        <pattern>
            [%level] [%thread] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%mdc{traceid}] [%mdc{userid}] [%mdc{sessionid}] [%logger{0}] [%msg]%n
        </pattern>
    </encoder>
    

    相关文章

      网友评论

        本文标题:关键操作流水记录方案

        本文链接:https://www.haomeiwen.com/subject/bwiqdqtx.html