SpringBoot中使用mybatis/ibatis日志打印sql

控制台打印mybatis/ibatis对应的sql

只需在配置文件中增加以下配置,调整自己想要的日志输出级别即可在控制台看到自己sql的打印日志。
(举例为.properties的配置格式,如果是yaml格式自行修改即可)

# 配置sql日志的打印级别(这里设置成自己mapper的所在路径)
logging.level.com.xxx.jay.cust.mapper=info 

主机的日志文件中打印mybatis/ibatis对应的sql

在做好第一步配置后发现主机的日志文件(app.log或catalina.out)中还是未打印服务对应的sql。原因为配置文件中配置的mybatis打印日志的输出方式使用的是org.apache.ibatis.logging.stdout.StdOutImpl,
查看StdOutImpl类发现打印为System.out.println()控制台输出打印的,所以sql对应的日志是在主机上的console.log下面。

# 配置mybatis输出日志的方式,使用的为默认的StdOutImpl
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

可以仿照StdOutImpl自定义mybatis打印日志的输出方式,在配置文件中配置成自己的输出方式类。即可实现在主机的日志文件(app.log或catalina.out)中打印服务对应的sql,方便对线上问题的定位。

/**
 * @Author: jay
 * 定义mybatis的sql打印输出方式
 * @Date: 2020/11/30 14:48
 */
public class SqlLogUtils implements Log{
    
    
    private final java.util.logging.Logger log;

    public SqlLogUtils(String clazz) {
    
    
        log = Logger.getLogger(clazz);
    }

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

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

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

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

    @Override
    public void debug(String s) {
    
    
        if(s.charAt(2) == '>' || s.charAt(0) == '<'){
    
    
            log.log(Level.INFO, s);
        }
    }

    @Override
    public void trace(String s) {
    
    
        log.log(Level.FINER, s);
    }

    @Override
    public void warn(String s) {
    
    
        log.log(Level.WARNING, s);
    }
}
# 配置mybatis输出日志的方式,指定使用自己定义的类。
mybatis.configuration.log-impl=com.xxx.jay.utils.SqlLogUtils

完成上述两步:1.定义自己想要的mybatis输出日志方式的类。 2.配置文件配置成自己新定义的类。
即可实现使用mybatis/ibatis时打印的sql在主机日志中输出

猜你喜欢

转载自blog.csdn.net/weixin_49442658/article/details/110535601