像 hibernate, mybatis 都是不打印真正執行的sql的,所以借助 log4jdbc 打印sql以及統計執行時間是非常方便的。
配置log4jdbc 有很多種方法,比如通過spring的攔截器。最簡單的方法就是在jdbc.url 連接參數加上log4jdbc,然后引入相應的log4jdbc包即可。
# 修改前 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8 # 修改后 spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpy spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8
COMMENT 原連接參數: jdbc.url=jdbc:mysql://127.0.0.1:3306/theme?characterEncoding=utf-8 COMMENT 加入log4jdbc后的連接參數: jdbc.url=jdbc:log4jdbc:mysql://127.0.0.1:3306/theme?characterEncoding=utf-8
引入jar包
<!-- log4jdbc -->
<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
我用logback,所以還要引入logback 和 slf4j-api包。
因為log4jdbc 默認輸出很多日志,所以需要配置,可以通過新建 log4jdbc.properties 配置,也可以通過logback.xml文件里配置, 用log4j的則是通過log4j.properties 或log4j.xml配置。
<!-- --> <logger name="jdbc.sqlonly" level="WARN"/> <logger name="jdbc.sqltiming" level="INFO"/> <logger name="jdbc.resultsettable" level="INFO"/> <logger name="jdbc.resultset" level="WARN"/> <logger name="jdbc.connection" level="WARN"/> <logger name="jdbc.audit" level="WARN"/> <!-- 或者關閉不必要的 --> <logger name="jdbc.connection" level="OFF" /> <logger name="jdbc.audit" level="OFF" /> <logger name="jdbc.resultset" level="OFF" /> <logger name="jdbc.sqlonly" level="OFF" /> <logger name="jdbc.sqltiming" level="INFO" /> <logger name="jdbc.resultsettable" level="INFO"/>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="jdbc.connection" additivity="false" level="FATAL">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
<logger name="jdbc.resultset" additivity="false" level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
<logger name="jdbc.audit" additivity="false" level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
<logger name="jdbc.sqlonly" additivity="false" level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
<logger name="jdbc.sqltiming" additivity="false" level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
</configuration>

