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依赖

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1artifactId>
    <version>1.16version>
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中加入如下内容


    <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>
查看效果

再次执行查询,查看效果

你可能感兴趣的:(Spring boot 使用logback+log4jdbc打印sql日志)