前言
使用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