SpringDataJpa打印Sql详情(含参数)


Spring Data Jpa打印Sql详情(带sql参数)

这里使用的是 log4jdbc,yml配置文件里的数据源配置也要做相应的修改

pom文件引入


    com.googlecode.log4jdbc
    log4jdbc
    1.2

修改yml配置文件

spring:
  datasource:
    url: jdbc:log4jdbc:mysql://xxxxxxxxxxxxxxxxxxxxxx
    username: root
    password: 123456
    driver-class-name: net.sf.log4jdbc.DriverSpy 

这里一共需要改两个地方,一个是driver-class-name,一个是url,要改成对应的log4j的。

添加配置文件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

这个时候已经可以启动项目查看效果了,这个时候没有截图,没法展示效果,简单描述下。

启动项目后我们能看到对应的完整Sql,包括参数,但是包含了很多我们不想看到的内容。

log4jdbc的log内容基本都包含在audit,resultsettable,connection,sqltiming,sqlonly这几个包下,所以我们需要对这几个包的log做一些处理;并且在实际项目中我们也需要对系统的log做一个保存,这时我们需要添加logback的配置文件。

添加logback配置

  1. logback-base.xml

    在resources目录下新建logback目录,并在里面新建logback-base.xml文件,文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
        
        
        
        
        
        
        
        
        
    
        
    
    
        
        
            
            
                
                ${CONSOLE_LOG_PATTERN}
                
                UTF-8
            
        
    
        
        
            
            ${LOG_HOME}/info.log
            
                
                ${LOG_HOME}/info.log.%d{yyyy-MM-dd}.%i.log
                ${LOG_MAX_HISTORY}
                200MB
                8GB
            
            
                
                ${FILE_LOG_PATTERN}
                
                UTF-8
            
            
                INFO
            
        
    
        
        
            
            ${LOG_HOME}/warn.log
            
                
                ${LOG_HOME}/warn.log.%d{yyyy-MM-dd}.%i.log
                ${LOG_MAX_HISTORY}
                200MB
                3GB
            
            
                
                ${FILE_LOG_PATTERN}
                
                UTF-8
            
            
                WARN
            
        
    
        
        
            ${LOG_HOME}/error.log
            
                ${LOG_HOME}/error.log.%d{yyyy-MM-dd}.%i.log
                ${LOG_MAX_HISTORY}
                100MB
                2GB
            
            
                ${FILE_LOG_PATTERN}
                
                UTF-8
            
    
            
                ERROR
            
        
    
        
        
            
            ${LOG_HOME}/debug.log
            
                
                ${LOG_HOME}/debug.log.%d{yyyy-MM-dd}.%i.log
                ${LOG_MAX_HISTORY}
                400MB
                5GB
            
            
                
                ${FILE_LOG_PATTERN}
                
                UTF-8
            
        
    
    
    
    

    这里配置了四个等级的日志DEBUG, INFO,ERROR,WARN,包括日志文件的格式和控制台打印的格式。

  2. logback各个环境的配置文件

    在创建了logback-base.xml配置文件后,实际项目中,我们需要在不同的环境打印不同的log,这个时候我们需要在logback-base.xml同目录下创建对应的配置文件;例如logback-test.xml,测试环境配置文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    
    
        
        
        
            
            
            
            
            
        
        
        
        
        
        
    
    
    

    在这里呢我们在include了base配置的基础上,添加了另一些配置,就是那几行logger标签,对log4jdbc的日志做了些过滤,只保留了connection和sqltiming包下的log。

  3. 修改yml配置文件。

    这个时候我们需要在系统yml配置文件中添加上两行引用我们刚刚写的配置文件。

    logging:
      config: classpath:logback/logback-test.xml
    

    这里要注意的是,logging是一级,前面不要用tab键或者空格。

查看效果

此时启动项目查看效果可以看到效果如下:

日志文件中的样式: