使用logback记录Spring JdbcTemplate中的SQL参数

9
我正在使用Logback和Spring JdbcTemplate记录我的SQL查询。我的配置包含以下一行代码:
<logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG" />

但是这个日志只记录带有通配符“?”的查询,没有参数列表。在SO上我找到了一些关于如何使用log4j实现参数日志记录的答案。但我不想切换到log4j。那么,我该如何在Logback中接收JdbcTemplate的参数列表呢?注意,我实际上正在使用NamedParameterJdbcTemplate。
3个回答

13

试试这个

<logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="TRACE" />

这将显示以下日志:

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


有点啰嗦,但它以开箱即用的方式完成了工作。谢谢! - M. Justin

1

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

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

如果更改您的DataSource/Connection Pool库不是一种选择,也许您可以使用log4jdbc,它作为代理jdbc驱动程序工作,将语句记录到SLF4J,然后调用实际的jdbc驱动程序与数据库进行通信。


0

<logger name="org.hibernate.type.descriptor.sql" level="TRACE" additivity="false" > <appender-ref ref="jdbc-transaction-log"/> </logger> - Tom Nguyen
请根据答案进行编辑,使用https://stackoverflow.com/editing-help,并将评论中的信息添加到答案本身。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接