1. 程式人生 > >Spring-boot--列印sql引數 log4jdbc與logback配置(轉)

Spring-boot--列印sql引數 log4jdbc與logback配置(轉)

Spring-boot--列印sql引數 log4jdbc與logback配置

 

在開發過程中,常常需要驗證sql語句,但是spring-boot-starter-data-jpa只支援輸出sql不會輸出引數,為了方便,整合log4jdbc

一、引入依賴

        <dependency>
            <groupId>com.googlecode.log4jdbc</groupId>
            <artifactId>log4jdbc</artifactId>
        </dependency>
  • 1
  • 2
  • 3
  • 4

二、資料庫配置

因為要使用log4jdbc作為資料庫驅動,所以資料配置檔案也需要做相應的改動

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://?characterEncoding=utf-8
  • 1
  • 2

需要由原來的配置改為

spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://host:port/dbname?characterEncoding=utf-8
  • 1
  • 2

三、log4jdbc 和logback 整合日誌過多的解決問題

log4jdbc預設會列印所有sql操作資訊,包括建立連線、開啟事務、執行時長等,一般情況下不需要這麼多,我們只打印執行sql日誌。 
application.properties檔案中設定 logging.config=classpath:logging-spring.xml,新建logging-spring.xml檔案

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <!--log4jdbc 日誌配置-->
    <logger name="jdbc.sqlonly" level="info">
    </logger>
    <logger name="jdbc.audit" level="OFF">
    </logger>
    <logger name="jdbc.resultset" level="OFF">
    </logger>
    <logger name="jdbc.connection" level="OFF">
    </logger>
    <logger name="jdbc.sqltiming" level="OFF">
        <appender-ref ref="CONSOLE"/>
    </logger>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

appender-ref 可以指定日誌輸出方向,這裡使用spring-boot預設日誌框架logback自帶的配置。 
level級別為TRACE 、DEBUG 、INFO、WARN、ERROR、FATAL,設定為OFF表示不列印。

四、sql列印前後對比

hibernate列印的sql

    select
        navmap0_.id as id1_2_,
        navmap0_.create_time as create_t2_2_,
        navmap0_.description as descript3_2_,
        navmap0_.map_file_id as map_file4_2_,
        navmap0_.name as name5_2_,
        navmap0_.org_id as org_id6_2_,
        navmap0_.update_time as update_t7_2_ 
    from
        nav_map navmap0_ 
    order by
        navmap0_.update_time desc limit ?,
        ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

log4jdbc

SELECT
    navmap0_.id AS id1_2_,
    navmap0_.create_time AS create_t2_2_,
    navmap0_.description AS descript3_2_,
    navmap0_.map_file_id AS map_file4_2_,
    navmap0_. NAME AS name5_2_,
    navmap0_.org_id AS org_id6_2_,
    navmap0_.update_time AS update_t7_2_
FROM
    nav_map navmap0_
ORDER BY
    navmap0_.update_time DESC
LIMIT 2,
 2