在使用 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 修改成自己的日志
按照以上步骤配置完成后,就可以实现MyBatis查询的相关参数SQL 打印到控制台并输出至日志文件中