【问题标题】:Use logback to log SQL parameters in Spring JdbcTemplateSpring JdbcTemplate中使用logback记录SQL参数
【发布时间】:2014-08-24 19:28:18
【问题描述】:

我正在使用 LogbackSpring JdbcTemplate 来记录我的 SQL 查询。我的配置包含下一行:

<logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG" />

但此日志仅使用通配符 ? 进行查询,没有参数列表。

在这里,我找到了一些如何使用 log4j 实现参数记录的答案。但我不想切换到 log4j

那么我如何使用 Logback 接收 JdbcTemplate 的参数列表?

编辑

实际上,如果重要的话,我正在使用NamedParameterJdbcTemplate

【问题讨论】:

    标签: spring logback jdbctemplate


    【解决方案1】:

    试试这个

    &lt;logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="TRACE" /&gt;

    这将显示日志:

    设置SQL语句参数值:列索引1,参数值[1234],值类[java.lang.Integer],SQL类型未知

    【讨论】:

    • 它有点冗长,但它以一种开箱即用的方式完成了工作。谢谢!
    【解决方案2】:

    我通常更喜欢在 DataSource 或 JDBC 驱动程序级别处理 SQL 语句日志记录。

    我使用BoneCP DataSource/Connection Pool 库,其中包括通过SLF4J 和许多其他有用的features 支持语句记录。

    如果更改数据源/连接池库不是一个选项,也许您可​​以使用log4jdbc 作为代理 jdbc 驱动程序,在调用与数据库对话的实际 jdbc 驱动程序之前将语句记录到SLF4J

    【讨论】:

      【解决方案3】:

      我们可以如下使用:

      org.hibernate.type.descriptor.sql.

      查看链接:https://thorben-janssen.com/hibernate-logging-guide/

      【讨论】:

      • &lt;logger name="org.hibernate.type.descriptor.sql" level="TRACE" additivity="false" &gt; &lt;appender-ref ref="jdbc-transaction-log"/&gt; &lt;/logger&gt;
      • edit 根据How to Answer,使用stackoverflow.com/editing-help 并将来自 cmets 的信息添加到答案本身。
      猜你喜欢
      • 2014-11-27
      • 2014-10-20
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 2020-08-07
      • 2015-07-10
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多