mybatis自定义日志类

在使用springboot的logback输出日志时,通过mybatis打印出来
的sql结果没有写入到日志文件中,为了可以把sql语句和sql结果
都输出到日志文件中,就自定义一个日志类

输出日志的前提条件需要配置好前提配置好logback的相关配置

打印sql的方法有两个

1. (控制台会输出sql语句和执行sql的结果,但输出的日志文件没有sql语句和执行结果)
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
2.(控制台只输出sql,没有执行sql的结果,输出的日志文件也只有sql语句)
logging:
  config: classpath:conf/logback-xtgl.xml
  level:
    cn.hll.test.mapper: debug

为了输出的日志文件里有sql语句和执行sql的结果,需要自定义一个日志类

点进 org.apache.ibatis.logging.stdout.StdOutImpl 类里可以看出来,mybatis配置的log-impl,打印的日志信息都是以sout方式输出到控制台的,所以我们重新写一个类实现Log类,通过log.info的方式打印sql
在这里插入图片描述

自定义日志类

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.logging.Log;

/**
 * 自定义mybatis-plus日志输出
 * mybatis-plus:
 *   configuration:
 *     log-impl: cn.hll.test.common.logging.CustomLogOutImpl
 * @author helele
 * @date 2021/1/4 14:26
 */
@Slf4j
public class CustomLogOutImpl implements Log {

    public CustomLogOutImpl(String clazz) {
        //需要定义一个有参的构造函数
    }

    @Override
    public boolean isDebugEnabled() {
        return true;
    }

    @Override
    public boolean isTraceEnabled() {
        return true;
    }

    @Override
    public void error(String s, Throwable e) {
        log.info("error: {}", s);
        e.printStackTrace(System.err);
    }

    @Override
    public void error(String s) {
        log.info("error: {}", s);
    }

    @Override
    public void debug(String s) {
        log.info("debug: {}", s);
    }

    @Override
    public void trace(String s) {
        log.info("trace: {}", s);
    }

    @Override
    public void warn(String s) {
        log.info("warn: {}", s);
    }
}

切换下mybatis的日志配置类即可

mybatis-plus:
  configuration:
    log-impl: cn.hll.test.common.logging.CustomLogOutImpl

版权声明:本文为sinat_33151213原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。