当前位置:   article > 正文

mybatis日志设置_mybatis日志级别设置

mybatis日志级别设置

笔者使用的mybatisplus的版本3.4.3.3,对应的mybatis的版本为3.5.7。在以前的项目中对于日志打印没发现对性能有多大影响,近期实现了一个大的数据量导出到Excel中(行数几十万,列数上百级别),发现每次打印出来的额sql语句返回的结果集太多了,几乎是刷屏状态,完全不能做分析使用。固对日志输出这块儿稍微看了一下,这里做下简单的分析:

配置mybatisplus日志输出分为很多种:

第一种,全量日志输出,包括查询语句、参数、返回结果集、总条数:

  1. #控制台打印sql
  2. mybatis-plus:
  3. configuration:
  4. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

看源码不难发现debug和trace级别日志均设置为true

第二种为,不打印sql语句、参数、返回结果集、条数是

  1. #控制台打印sql
  2. mybatis-plus:
  3. configuration:
  4. log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
  5. call-setters-on-nulls: true

看源码不难发现,debug和trace均设置为false

        而实际业务中上面两种设置完全不能满足,第一种全量输出会让系统处于高io场景中对业务没利,第二种完全不输出则无法分析业务场景数据(比如异常、逻辑分析等)。实际上我们需要的是能输出sql语句,但是却不输出结果集的配置,固想到第三种设置方式。

        第三种方式需要自己实现log接口,并设置debug和trace的级别分别为true和false

  1. package com.yaodou.common.config;
  2. import org.apache.ibatis.logging.Log;
  3. /**
  4. * 创建人:
  5. * 创建时间:2022/3/17 23:27
  6. * 类名:
  7. * 参数:
  8. * 返回值:
  9. * 类描述:
  10. */
  11. public class SqlOutLogImpl implements Log {
  12. public SqlOutLogImpl(String clazz) {
  13. System.out.println("SqlOutLogImpl::"+clazz);
  14. }
  15. @Override
  16. public boolean isDebugEnabled() {
  17. return true;
  18. }
  19. @Override
  20. public boolean isTraceEnabled() {
  21. return false;
  22. }
  23. @Override
  24. public void error(String s, Throwable throwable) {
  25. System.err.println(s);
  26. throwable.printStackTrace(System.err);
  27. }
  28. @Override
  29. public void error(String s) {
  30. System.err.println("SqlOutLogImpl:error:"+s);
  31. }
  32. @Override
  33. public void debug(String s) {
  34. System.out.println("SqlOutLogImpl:debug:"+s);
  35. }
  36. @Override
  37. public void trace(String s) {
  38. System.out.println("SqlOutLogImpl:trace:"+s);
  39. }
  40. @Override
  41. public void warn(String s) {
  42. System.out.println("SqlOutLogImpl:warn:"+s);
  43. }
  44. }

配置文件中为:

  1. #控制台打印sql
  2. mybatis-plus:
  3. configuration:
  4. log-impl: com.yaodou.common.config.SqlOutLogImpl
  5. call-setters-on-nulls: true

如上设置即可实现输出sql却不输出结果集效果。

样例如下:

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号