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的实现类,我们查看这个类的源码

StdOutImpl

可以看出,都是用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个方法返回值不是默认了,如下图对比
    Slf4jImpl的方法返回

    StdOutImpl的方法返回

    所以修改完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的详细结果了,也够用

你可能感兴趣的:(SpringBoot配置控制台和日志文件sql输出)