【问题标题】:How to log SQL queries, their parameters and results with Log4jdbc in Spring Boot projects?如何在 Spring Boot 项目中使用 Log4jdbc 记录 SQL 查询、它们的参数和结果?
【发布时间】:2018-01-02 22:53:43
【问题描述】:

要查看发送到数据库的 SQL 查询,我们通常使用showSql 参数:

spring.jpa.showSql=true

它允许我们看到语句体而不是它的参数:

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

尤其是我们看不到查询的结果。

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

【问题讨论】:

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


    【解决方案1】:

    JDBC 日志记录

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

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

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

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

    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:

    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
    

    另外,我们可以在一行中添加这些log4jdbc参数来得到输出:

    log4jdbc.dump.sql.addsemicolon=true
    log4jdbc.dump.sql.maxlinelength=0
    log4jdbc.trim.sql.extrablanklines=false
    

    【讨论】:

    • 感谢您的回答,但我有一个问题,我想将这些日志保存在我数据库中的一个表中。我该怎么做??
    猜你喜欢
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2019-02-21
    • 2023-02-23
    • 1970-01-01
    • 2017-11-05
    相关资源
    最近更新 更多