SpringBoot + MyBatis + slf4j 自定义日志输出

在使用 MyBatis 时,如果想将日志输出可以在 application 配置文件中配置

mybatis-plus.configuration.log-impl 该属性选择日志输出方式

在实际开发中,可能需要将MyBatis查询SQL放入日志中,而 org.apache.ibatis.logging.stdout.StdOutImpl 只能将SQL数据打印在控制台不能输出日志。org.apache.ibatis.logging.slf4j.Slf4jImpl 设置相对繁琐,并且只能在DEBUG或TRACE 模式下 SQL相关信息才会输出。与些同时会输出很多我们并不想看到的日志信息。

如果想将SQL信息打印在控制台的同时又输出至日志中,可以选择参照 StdOutImpl 自己写一个日志类

操作如下

1. 引入 slf4j相关依赖并配置 logback.xml 此步忽略

2. 重写一个实现 Log 接口的类

import org.apache.ibatis.logging.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author hjf
 * @version 1.0
 * @description 用于MyBaits 日志输出SQL
 *              如果不使用 请在 application.yml
 *              mybatis-plus.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl
 * @date 2021-09-08 16:01
 */

public class MyBaitsLogConfig implements Log {

    private Logger log;

    public MyBaitsLogConfig(String clazz) {
        log = LoggerFactory.getLogger(clazz);
    }

    @Override
    public boolean isDebugEnabled() {
//        return log.isDebugEnabled();
        return true; // 默认开启 Debug
    }

    @Override
    public boolean isTraceEnabled() {
//        return log.isTraceEnabled();
        return true; // 默认开启 Trace
    }

    @Override
    public void error(String s, Throwable e) {
        log.error(s,e);
    }

    @Override
    public void error(String s) {
        log.error(s);
    }

    @Override
    public void debug(String s) {
        log.info(s);  //SQL 获取参数输出至 info 
    }

    @Override
    public void trace(String s) {
        log.info(s); //SQL 信息输出至 info 
    }

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

3.将 mybatis-plus.configuration.log-impl 修改成自己的日志

SpringBoot + MyBatis + slf4j 自定义日志输出

按照以上步骤配置完成后,就可以实现MyBatis查询的相关参数SQL 打印到控制台并输出至日志文件中

 

上一篇:快速下载jar包方式


下一篇:SLF4J 快速入门 / 绑定原理