云迈博客

您现在的位置是:首页 > 灌水专栏 > 正文

灌水专栏

MDC使用

雷黄彦2022-07-01灌水专栏218
配置logback.xml˃%msg%n"/˃MdcUtilpublicclassMdcUtil{privatefinalstaticStringRE

配置 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 
    -X  输出X个字符后对齐

    %d 输出时间 {HH:mm:ss.SSS}内为时间格式
    %thread 线程名字
    %level 日志级别
    %logger 执行类路径 {n}输出n个字符
    %method 当前方法
    %line 当前代码行数
    %X{param}  param MDC值
    %msg 日志内容
    %n 换行
     -->
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger{20} - [%method,%line] %X{REQ_ID}  >> %msg%n"/>

    <!-- 省略若干配置 ....-->

</configuration>

MdcUtil

public class MdcUtil {

    private final static String REQ_ID = "REQ_ID";

    private final static String BUSINESS = "BUSINESS";


    public static void  putReqId(HttpServletRequest request){
        try {
            MDC.put(REQ_ID,request.getSession(true).getId());
        } catch (IllegalArgumentException e) {
            log.warn("获取 SessionId 失败");
        }
    }

    public static void  put(String key,String val){
        MDC.put(key,val);
    }

    public static void  put(String val){
        MDC.put(BUSINESS,val);
    }


    public static String  get(){
        return MDC.get(BUSINESS);
    }

    public static void  remove(){
        MDC.remove(BUSINESS);
    }
}

使用示例


@Slf4j
public class Test {


    public static void main(String[] args) {
        MdcUtil.put("新增用户");
        one();
    }

    public static void one() {

        log.info("第一步");
        one1();
    }

    public static void one1() {
        log.info("第二步");
        one2();
    }

    public static void one2() {
        log.info("第三步");
        one3();
    }

    public static void one3() {
        log.info("第四步");
    }
}

输出

2022-06-27 14:25:25.650 新增用户 [main] INFO com.yunmell.Test - [one,17]   >> 第一步
2022-06-27 14:25:25.651 新增用户 [main] INFO com.yunmell.Test - [one1,22]  >> 第二步
2022-06-27 14:25:25.652 新增用户 [main] INFO com.yunmell.Test - [one2,27]  >> 第三步
2022-06-27 14:25:25.652 新增用户 [main] INFO com.yunmell.Test - [one3,32]  >> 第四步

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~