1. 程式人生 > >Spring boot 使用logback+log4jdbc列印sql日誌

Spring boot 使用logback+log4jdbc列印sql日誌

前言

使用Spring Boot進行開發時,我們為了除錯方便,都需要輸出sql語句,簡單的日誌列印方式,只能顯示sql語句,並不能顯示具體的佔位符的內容,這篇文章主要講解如何使用logback+log4jdbc列印sql日誌並顯示佔位符內容

簡單列印日誌

使用簡單的方式列印sql日誌,只需要在配置檔案中新增

spring:
  jpa:
    show-sql: true

通過設定 show-sql: true 就能列印日誌,效果如下


這種方式大多數情況下不能滿足我們的需求,這時就需要另一種方式來替代

logback+log4jdbc列印sql日誌

使用了logback+log4jdbc列印的效果如下


這裡可以看到,雖然輸出了佔位符裡面的內容,但是也顯得特別的冗餘,那麼如何優化它的顯示,文章下面會提及

匯入maven依賴
<!--監控sql日誌-->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</
dependency
>
修改配置檔案
spring:
  datasource:
    driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
    url: jdbc:log4jdbc:mysql://localhost:3306/jpa
    username: root
    password: 123456
新增log4jdbc.log4j2.properties

在resources目錄新增log4jdbc.log4j2.properties檔案

# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
優化顯示效果

修改logback.xml,在logback.xml中加入如下內容

<!--監控sql日誌輸出 -->
    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="console" />
    </logger>

    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="console" />
    </logger>

    <!--將不必要顯示的隱藏掉-->
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="console" />
    </logger>

    <!--將不必要顯示的隱藏掉-->
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="console" />
    </logger>

    <!--將不必要顯示的隱藏掉-->
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="console" />
    </logger>
檢視效果

再次執行查詢,檢視效果

專案原始碼

github:https://github.com/dqjdda/SpringBoot_All

碼雲:https://gitee.com/hgpt/SpringBoot_All

開源後臺管理系統:

歡迎體驗Aurora

github: https://github.com/dqjdda/Aurora

碼雲: https://gitee.com/hgpt/Aurora