SpringBoot配置控制台和日志文件sql输出

SpringBoot我一般使用Mybatis(Mybatis-plus)做持久层架构,在配置文件application.yml中一般配置如下(有其他需求自己添加):

# mybatis
mybatis-plus:
  type-aliases-package: com.test.common.entity
  # 指定mybatis映射文件的位置
  mapper-locations: classpath:mapper/*.xml
  configuration:
    # 开启驼峰命名转换(开启后需要注意字段写法,不然返回值为null)
    map-underscore-to-camel-case: true
    # 配置mybatis日志输出sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: AUTO

上面的配置,因添加了log-impl: org.apache.ibatis.logging.stdout.StdOutImpl,所以我们在控制台可以看到输出的sql以及查询结果,内容丰富,个人感觉还是很OK的。但是日志文件中并不会有sql输出。
log-impl,看名字就知道是配置的一个log的实现类,我们查看这个类的源码

SpringBoot配置控制台和日志文件sql输出

可以看出,都是用System输出的,所以只会在控制台输出,不会在日志中输出了。
我们可以替换这个log实现类,来实目前日志中输出sql的目的。

1. 在控制台输出sql文件

一般就添加配置:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl,这个输出sql还有sql的结果,我一般都用这个。

2. 在sql文件和控制台中输出sql

就是替换log的实现类。mybatis自带的有许多,有兴趣可以自己看一下。这里我们替换成org.apache.ibatis.logging.slf4j.Slf4jImpl
查看这个类的源码,发现和原来那个还略有不同。

  1. 打印用log来打印了,不用System
  2. 有2个方法返回值不是默认了,如下图对比

    SpringBoot配置控制台和日志文件sql输出

    SpringBoot配置控制台和日志文件sql输出

    所以修改完Log实现类后来还需要在配置文件中配置log的等级为debug

# mybatis
mybatis-plus:
  type-aliases-package: com.test.common.entity
  # 指定mybatis映射文件的位置
  mapper-locations: classpath:mapper/*.xml
  configuration:
    # 开启驼峰命名转换(开启后需要注意字段写法,不然返回值为null)
    map-underscore-to-camel-case: true
    # 替换log实现类
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  global-config:
    db-config:
      id-type: AUTO
# 设置log等级,可以按包或者类来设定,我一般直接把dao层设为debug
logging:
  level:
     [com.test1.dao] : debug
     [com.test2.dao] : debug

这样就可以在日志文件和控制台中都输出sql了,但是就没有sql的详细结果了,也够用

© 版权声明

相关文章

暂无评论

none
暂无评论...