使用Glassfish 3.0.1和NetBeans 6.9.1实现JPA 2.0(通过记录和跟踪):

10
我正在使用JPA 2.0(EclipseLink提供程序),与Glassfish v3.0.1和NetBeans 6.9.1,但无法查看来自JPA 2.0的查询和其他日志信息。基本上,我想能够查看JPA生成的所有SQL语句和其他相关调试信息...

是否有人成功地配置了日志记录以提供这样的反馈? 我尝试过几种方法,但都没有成功...

如果能得到任何帮助,将不胜感激。

非常感谢。

2个回答

14

最终对我有效的方法是使用:

<property name="eclipselink.logging.logger"
     value="org.eclipse.persistence.logging.DefaultSessionLog"/>
与你推荐的标签一起使用:
<property name="eclipselink.logging.level" value="FINE" />
这让我能够在NetBeans输出窗口中看到相关的JPA日志。这在Eclipse中也有效。输出被发送到控制台窗口,并与服务器的输出混合在一起,这正是我想要的。

1
能否自动区分生产系统和开发系统?每次部署到生产系统之前都设置日志级别为INFO太麻烦了,而且如果忘记的话也很危险。 - Hasan Tuncay

5

您需要在persistence.xml文件中配置日志级别。

例如:

<persistence-unit name="MY_POOL_NAME" transaction-type="JTA">
  <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>MY_JTA_SOURCE</jta-data-source>
    <properties>
        <b><property name="eclipselink.logging.level" value="FINE" />
        <property name="eclipselink.target-server" value="SunAS9"/></b>
    </properties>
  </persistence-unit>
日志级别:
OFF
SEVERE(严重)
WARNING(警告)
INFO(信息)
CONFIG - 在生产环境中使用此项
FINE
FINER
FINEST
更多信息: http://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging

所有查询都将打印在域服务器日志文件server.log中。


4
感谢您的回答。最终对我有用的是使用以下语句:<property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>,与您推荐的标签一起使用:<property name="eclipselink.logging.level" value="FINE" />。这使我能够在NetBeans输出窗口中看到相关的JPA日志。这也适用于Eclipse。输出被发送到控制台窗口,并与服务器的输出混合在一起,这正是我想要的。 - Alex H

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