SpringBoot+Mybatis logback不打印SQL解決方案


最近項目,由於測試提出需要將日志按天滾動日志,所以用了logback,日志打印工具。

但是由於使用了mybatis-config.xml 一直不打印SQL。最后將

<setting name="logImpl" value="STDOUT_LOGGING" />

這行注釋,並且在application.properties里添加

logging.level.com.**.**.**.schedule.mapper=DEBUG

就可以了,以下是完整的配置。

mybatis-config.xml:

<?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>
    <properties>
        <property name="dialect" value="mysql"/>
    </properties>
    <settings>
        <!-- 開啟駝峰匹配 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- 這個配置使全局的映射器啟用或禁用緩存。系統默認值是true,設置只是為了展示出來 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 全局啟用或禁用延遲加載。當禁用時,所有關聯對象都會即時加載。 系統默認值是true,設置只是為了展示出來 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 允許或不允許多種結果集從一個單獨的語句中返回(需要適合的驅動)。 系統默認值是true,設置只是為了展示出來 -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!--使用列標簽代替列名。不同的驅動在這方便表現不同。參考驅動文檔或充分測試兩種方法來決定所使用的驅動。 系統默認值是true,設置只是為了展示出來 -->
        <setting name="useColumnLabel" value="true"/>
        <!--允許 JDBC 支持生成的鍵。需要適合的驅動。如果設置為 true 則這個設置強制生成的鍵被使用,盡管一些驅動拒絕兼容但仍然有效(比如
            Derby)。 系統默認值是false,設置只是為了展示出來 -->
        <setting name="useGeneratedKeys" value="false"/>
        <!--配置默認的執行器。SIMPLE 執行器沒有什么特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 系統默認值是SIMPLE,設置只是為了展示出來 -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!--設置超時時間,它決定驅動等待一個數據庫響應的時間。 系統默認值是null,設置只是為了展示出來 -->
        <setting name="defaultStatementTimeout" value="25000"/>

        <setting name="callSettersOnNulls" value="true"/> <!-- 返回空字段 -->

        <!-- 打印查詢語句 -->
<!--         <setting name="logImpl" value="STDOUT_LOGGING" />-->
    </settings>

    <!-- 分頁助手 -->
      <plugins>
          <plugin interceptor="com.github.pagehelper.PageHelper">
              <!-- 數據庫方言 -->
              <property name="dialect" value="mysql" />
              <property name="offsetAsPageNum" value="true" />
              <!-- 設置為true時,使用RowBounds分頁會進行count查詢 會去查詢出總數 -->
              <property name="rowBoundsWithCount" value="true" />
              <property name="pageSizeZero" value="true" />
              <property name="reasonable" value="true" />
          </plugin>
      </plugins>
</configuration>

 

logback相關:

  logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="true">
    <property file ="../config/logback/logback.properties" />
    <include  file="../config/logback/logback-prod.xml"/>
    <root level="INFO">
        <appender-ref ref="ASYNC_ROLLING_INFO" />
        <appender-ref ref="ASYNC_ROLLING_DEBUG" />
        <appender-ref ref="ASYNC_ROLLING_WARN" />
        <appender-ref ref="ASYNC_ROLLING_ERROR" />
    </root>

</configuration>

  logback-prod.xml:

<?xml version="1.0" encoding="UTF-8"?>
<included>
        <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${info.file.path}</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>../log/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 100MB -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
        <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${debug.file.path}</file>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>DEBUG</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${base.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 100MB -->
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
        </appender>
        <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${error.file.path}</file>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${base.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 100MB -->
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
        </appender>
        <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${warn.file.path}</file>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>WARN</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${base.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 100MB -->
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>R
                <pattern>${log.pattern}</pattern>
            </encoder>
        </appender>
        
    <appender name="sql"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${sql.file.path}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <FileNamePattern>${base.path}/sql.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
                       <MaxHistory>30</MaxHistory>
                       <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                             <!-- or whenever the file size reaches 100MB -->
                            <maxFileSize>100MB</maxFileSize>
                        </timeBasedFileNamingAndTriggeringPolicy>
                </rollingPolicy>
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                        <pattern>[%d{yyyy-MM-dd HH:mm:ss} [%t] [%X{traceId}]  %5p %c:%L] %m%n</pattern>
                </encoder>
        </appender>
        <logger name="com.**.**.**.schedule.mapper" level="DEBUG" additivity="false">
                <appender-ref ref="sql" />
        </logger>
        <logger name="org.mybatis" level="DEBUG" additivity="false" >
                <appender-ref ref="sql" />
        </logger>

        <appender name="ASYNC_ROLLING_INFO" class="ch.qos.logback.classic.AsyncAppender">
            <appender-ref ref="INFO" />
        </appender>
        <appender name="ASYNC_ROLLING_DEBUG" class="ch.qos.logback.classic.AsyncAppender">
            <appender-ref ref="DEBUG" />
        </appender>
        <appender name="ASYNC_ROLLING_WARN" class="ch.qos.logback.classic.AsyncAppender">
            <appender-ref ref="WARN" />
        </appender>
        <appender name="ASYNC_ROLLING_ERROR" class="ch.qos.logback.classic.AsyncAppender">
            <appender-ref ref="ERROR" />
        </appender>
</included>

logback.properties

log.pattern = [%date{ISO8601}] [%-5level] [%X{requestId}] [%X{rocketmqId}] [%logger] - %msg %rootException %n
log.level.pattern = [%date{ISO8601}] [%-5level] [%X{requestId}] [%X{rocketmqId}] [%logger] - %msg %rootException %n
info.file.path = ../log/info.log
debug.file.path = ../log/debug.log
error.file.path = ../log/error.log
sum.file.path = ../log/sum.log
warn.file.path = ../log/warn.log
sql.file.path = ../log/sql.log
base.path=../log

 

文章為原創

謝謝觀看


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM