4

我正在开发一个休眠控制台应用程序并参考这篇文章http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/来设置 P6Spy 以查看是什么Hibernate 生成的 SQL 的“(?)”的实际值。

设置应该可以正常工作,因为我可以在应用程序启动期间看到 P6Spy 输出的信息/调试消息。但是,在那之后,P6Spy 似乎无法拦截任何 JDBC 语句。从hibernate生成的日志(例如:)Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?)可以确定JDBC语句已经发送到数据库。

以下是我的设置:

休眠.cfg.xml

  • 已指定使用 P6Spy 驱动程序:<property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • 已经打开了 hibernate.show_sql 属性: <property name="hibernate.show_sql">true</property>

间谍属性

  • 已更改为使用我的实际数据库 JDBC 驱动程序,过滤器设置为 false,包含类别已明确设置为记录任何内容。
module.log=com.p6spy.engine.logging.P6LogFactory
realdriver=oracle.jdbc.driver.OracleDriver
filter=false
dateformat=yyyy.MM.dd HH:mm:ss
excludecategories=
includecategories=error, info, batch, debug,statement,commit,rollback,result
appender=com.p6spy.engine.logging.appender.StdoutLogger

我错过了任何重要的设置吗?

4

3 回答 3

1

我从未使用过 P6Spy,但您可以将绑定变量输出到您的日志。尝试将其放入您的 log4j.properties 或 xml 文件中。

log4j.category.org.hibernate.type=调试,控制台

于 2011-02-18T18:07:35.497 回答
1

此类问题的常见原因是 JDBC 驱动程序在 P6SpyDriver 之前加载。您可以通过在 spy.properties 中设置 deregisterdrivers=true 来解决此问题。

顺便说一句 - 此问题已在 2.0-alpha-1 中修复。

于 2013-11-15T21:53:23.717 回答
0

最后,我放弃了,P6Spy因为它是最新版本回到 2003 年的旧库。我求助于另一个类似的免费开源工具,称为log4jdbc拦截 JDBC 语句,如果您有兴趣,请参阅获取更多信息。

于 2011-11-11T06:50:20.617 回答