Spring boot 使用logback+log4jdbc列印sql日誌
阿新 • • 發佈:2018-11-10
前言
使用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