springboot中使用logback打印mybatis的sql日志
文章目录
前言
最近升级了springboot和mybatis发现了一点小问题,就是这个logback打印mybatis的sql日志问题。网上搜索,一大堆什么加前缀啊,什么logback-spring.xml在里面添加
<logger name="com.fm.springbootdemo.mapper" level="DEBUG"/>
啊之类的,太坑。都显示不出来。
我的配置
我当前的springboot版本2.1.2.RELEASE
myabtis版本为3.5.0
logback版本为1.2.3
开始配置
1.在application.yml里面添加logback-spring.xml配置
logging:
config: classpath:logback-spring.xml
下面是我的logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!-- 日志文件存放路径 -->
<property name="PATH" value="\log"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${PATH}/spring.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${PATH}/spring.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern>
</encoder>
</appender>
<!--这个一定要 -->
<logger name="com.fm.springbootdemo.mapper" level="DEBUG"/>
<!-- 默认 -->
<root>
<level value="INFO" />
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
关于这里,有两点想说明,
第一点:需要添加logger
<logger name="com.fm.springbootdemo.mapper" level="DEBUG"/>
第二点:root的level为INFO,这里使用debug也可以打印日志,但是日志太多,看起来头疼。也不方便有问题时查找问题。
2.在mybatis-config.xml添加setting
这里如果有人不知道,springboot怎么集成myabtis,可看我之前的一篇博客Springboot、springmvc集成mybatis
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 打印查询语句 -->
<setting name="logImpl" value="SLF4J" />
</settings>
</configuration>
为什么要加,是因为mybatis默认支持没有logback,但是它支持SLF4J API,而logback实现了SLF4J API。
这一点我们可以从logback的官网看到介绍,官网地址logback官网
The logback-core module lays the groundwork for the other two modules. The logback-classic module can be assimilated to a significantly improved version of log4j. Moreover, logback-classic natively implements the SLF4J API so that you can readily switch back and forth between logback and other logging frameworks such as log4j or java.util.logging (JUL).
翻译:
logback-core模块为其他两个模块奠定了基础。 logback-classic模块可以被同化为log4j的显着改进版本。 此外,logback-classic本身实现了SLF4J API,因此您可以在logback和其他日志框架(如log4j或java.util.logging(JUL))之间来回切换。
所以这里要加上这个setting
好了就到这里,希望以后遇到这个问题,不在被各个不正确的答案所迷惑了。