springboot中使用logback打印mybatis的sql日志

2023-11-06

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

好了就到这里,希望以后遇到这个问题,不在被各个不正确的答案所迷惑了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot中使用logback打印mybatis的sql日志 的相关文章

随机推荐