【问题标题】:Logging queries from Hibernate 4.3 (with SLF4J+Logback or P6SPY)从 Hibernate 4.3 记录查询(使用 SLF4J+Logback 或 P6SPY)
【发布时间】:2014-05-07 09:50:38
【问题描述】:

我正在使用 Glassfish 4 和 Hibernate 4.3。

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

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

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

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

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

还有更好的选择吗?

提前致谢。

【问题讨论】:

    标签: logging slf4j logback hibernate-4.x p6spy


    【解决方案1】:

    要在 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。

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2017-05-06
      • 2020-08-07
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 2015-02-14
      相关资源
      最近更新 更多