Java hibernate 4 log4j视图查询参数

Java hibernate 4 log4j视图查询参数,java,hibernate,jpa,orm,log4j,Java,Hibernate,Jpa,Orm,Log4j,我有一个web应用程序托管在glassfish 4上,它是用hibernate(JPA)和JSF构建的,我想查看查询参数。 不久前,我可以看到这些参数,但我猜当我从hibernate 3.x切换到4.x时,日志功能消失了。 因此,我在persistence.xml中有: <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/>

我有一个web应用程序托管在glassfish 4上,它是用hibernate(JPA)和JSF构建的,我想查看查询参数。
不久前,我可以看到这些参数,但我猜当我从hibernate 3.x切换到4.x时,日志功能消失了。
因此,我在persistence.xml中有:

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
事实上,我可以看到查询,但我看到的不是参数而是问号。
我已经阅读了一些关于hibernate4使用jboss日志的内容,并添加了以下内容:

-Dorg.jboss.logging.provider=log4j
在glassfish中创建jvm参数,但仍然没有运气。 有什么想法吗?

试着在您的实际数据源前面告诉您

数据源代理可以很好地拦截所有查询和记录参数。我在我的所有示例中都使用了这种日志记录方法,您也可以在上检查配置


在方括号中,您将找到PreparedStatement参数。它甚至可以在调用过程和函数时工作。

配置->服务器配置->记录器设置->日志级别->添加记录器->org.hibernate.type:FINEST


来源:

您的jar中有slf4j-log4j12.jar吗?我在maven pom中尝试过使用和不使用slf4j-log4j12.jar,但结果是一样的。Hibernate 4使用JBoss日志记录而不是slf4j。请参阅感谢您提供的解决方案,如果我无法以“更经典”的方式解决此问题,我将回过头来解决。请尝试在LoggerManager中加载Log4j配置的位置添加断点。通过这种方式,您可以确保您的配置被加载,而不是来自其他jar的其他log4j.xml文件。加载的文件是正确的,就像我在那里更改了某些内容一样,它反映到记录器行为中。我想,作为最后的手段,我将使用一些代理数据源。我认为您还应该在Hibernate中填充一个bug,并提供一个测试用例来复制它。
-Dorg.jboss.logging.provider=log4j
Query:{[
select
    product0_.id as id1_18_1_,
    product0_.code as code2_18_1_,
    product0_.company_id as company_6_18_1_,
    product0_.importer_id as importer7_18_1_,
    product0_.name as name3_18_1_,
    product0_.quantity as quantity4_18_1_,
    product0_.version as version5_18_1_,
    company1_.id as id1_6_0_,
    company1_.name as name2_6_0_
from Product product0_
inner join Company company1_ on product0_.company_id=company1_.id
where product0_.id=?][1]