如何在Spring Boot项目中使用Log4jdbc记录SQL查询及其参数和结果?

时间:2017-07-27 09:38:48

标签: java sql spring-boot logging spring-data-jpa

要查看发送给DB的SQL查询,我们通常使用showSql参数:

spring.jpa.showSql=true

它允许我们查看语句体,但不能查看其参数:

insert into master (id, version, name) values (null, ?, ?)

特别是我们没有看到查询结果。

有没有办法在应用程序日志中查看SQL语句,其参数和结果?

1 个答案:

答案 0 :(得分:3)

JDBC日志记录

使用 log4jdbc-spring-boot-starter ,我们可以在Spring Boot / Spring Data JPA项目中轻松记录所有JDBC语句,其参数和结果。

例如,当我们在我们的应用程序中执行一些JPQL查询时:

while(system("ls `git rev-parse --git-dir` | grep rebase") eq 'rebase-apply/'){
       my $mergeToolMsg=system("git mergetool");
       chomp $mergeToolMsg;
       if($mergeToolMsg != 0){
           //This doesnt hit even
           last;
       }else{
          system("git rebase --continue"); 
       }

    }

然后我们在应用程序日志中看到以下SQL查询及其参数:

select u from User u where u.name = 'john'

其结果以表格形式显示:

select ... from users users0_ where users0_.name='john'

要使用此启动器,我们必须将其依赖项添加到我们的项目中:

|---|---------|
|id |name     |
|---|---------|
|1  |john     |
|---|---------|

并将这些参数添加到<dependency> <groupId>com.integralblue</groupId> <artifactId>log4jdbc-spring-boot-starter</artifactId> <version>1.0.2</version> </dependency>

application.properties

此外,我们可以添加这些 log4jdbc 参数以获得一行输出:

logging.level.jdbc.resultsettable=info
logging.level.jdbc.sqltiming=info
logging.level.jdbc.sqlonly=fatal
logging.level.jdbc.audit=fatal
logging.level.jdbc.resultset=fatal
logging.level.jdbc.connection=fatal