1. 程式人生 > 實用技巧 >詳解druid列印SQL日誌

詳解druid列印SQL日誌

在看本文之前你需要會使用logback或者log4j2基本配置,可以參看前期文章

log4j2 logback

1、druid官方出的方案,本文是在官方方案上進一步優化,Druid中使用log4j2進行日誌輸出

2、在使用mybatis作為ORM元件,列印SQL日誌需要指定xxxx.Mapper日誌級別是DEBUG級別,因為多服務下包名是不一樣的,這樣做是比較不方便無法做到通用。

3、官方的描述中需要開啟日誌列印

# 配置日誌輸出
spring.datasource.druid.filter.slf4j.enabled=true

標紅的是不需要列印,檢視原始碼,com.alibaba.druid.filter.logging.Slf4jLogFilter

發現預設情況下都是true配置,因此我們需要將不需要列印的日誌改為false

原始碼

if (statementPrepareAfterLogEnable && isStatementLogEnabled()) {
            statementLog("{conn-" + statement.getConnectionProxy().getId() + ", pstmt-" + statement.getId()
                         + "} created. " + statement.getSql());
        }

我們將statementPrepareAfterLogEnable 配置為false即可

spring.datasource.druid.filter.slf4j.enabled=true
spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false

日誌輸出如下,已經沒有created.

同理,closed也是如此配置,

#輸出sql日誌
spring.datasource.druid.filter.slf4j.enabled=true
spring.datasource.druid.filter.slf4j.statement
-prepare-after-log-enabled=false spring.datasource.druid.filter.slf4j.statement-close-after-log-enabled=false