0

我正在使用 Glassfish 4 和 Hibernate 4.3。

如何记录来自 Hibernate 的每个查询?

我的第一次尝试涉及 SLF4J 1.7.7 和 Logback 1.1.2。我尝试了一些使用 SLF4J 和 Logback 的教程,但没有结果。 一个教程说要手动更改一些文件并向 glassfish 添加一些选项,但我不喜欢这种方式。

在我的第二次尝试中,我使用了 P6SPY 2.0.2。为了使这个库工作,我需要更改我的连接以使用 P6SPY 驱动程序并配置 spy.properties 以使用真正的驱动程序。因为我已经在 Glassfish 上配置了我的连接池,所以我尝试了P6SPY 安装教程来在那里配置它,但我还没有设法让我的新 DataSource 工作。在 P6SPY 安装教程中,有一种方法可以使用 java.sqlDriver 和 javax.sql.ConnectionPoolDataSource 进行配置,但我使用的是 javax.sql.DataSource。

那么,这是将 SLF4J 与 Glassfish 一起使用的唯一方法吗?您知道教程或如何配置它吗?

如果 SLF4J 不起作用,我如何配置 P6SPY 以使用 Glassfish 连接池记录我的查询?

有更好的选择吗?

提前致谢。

4

1 回答 1

2

要在 Glassfish 上将 P6Spy 与 DataSource 一起使用,您需要设置第二个 DataSource。执行此操作的方式与设置 ConnectionPoolDataSource 的说明非常相似。唯一的区别是您将 res-type 设置为 javax.sql.DataSource。

例子:

<jdbc-connection-pool datasource-classname="com.p6spy.engine.spy.P6DataSource" res-type="javax.sql.DataSource" name="p6spyPool">
  <property name="realDataSource" value="jdbc/myrealds"></property>
  <property name="Password" value=""></property>
  <property name="User" value="sa"></property>
</jdbc-connection-pool>
<jdbc-resource pool-name="p6spyPool" jndi-name="jdbc/p6spy"></jdbc-resource>   

注意:您需要将 jdbc/myrealds 替换为真实数据源的 jndi 名称。

另外 - 使用数据源代理时,您不需要在 spy.properties 中配置真正的驱动程序。

如果您对配置仍有问题,请发送消息至 p6spy-users@googlegroups.com。

于 2014-05-09T04:10:40.227 回答