0

我试图让 Hibernate 记录参数值。我正在使用 Netbeans 并将生成的 WAR 文件部署到 Ubuntu 机器上的 Glassfish。我正在使用 java util 日志记录(而不是 log4j 等),因为我以前没有使用过它并且想看看它的比较。

我在persistence.xml 中将hibernate.show_sql 属性设置为true,是的,我可以看到SQL 出现在日志中(INFO 级别)。但是,要查看 SQL 中使用的参数值,我相信我需要将 Hibernate 的日志级别更改为 TRACE(或至少是 DEBUG),而我的应用程序似乎设置为 INFO 级别。

我知道 logging.properties 是这样做的地方,但文档似乎都指向在 JRE 中配置它,这将是系统范围的。

我的问题是......我可以将 logging.properties 放在我的应用程序中的某个位置,以便同一应用服务器上的不同应用程序可以具有不同的日志记录配置吗?

而且,鉴于(从我读到的)Hibernate 使用通用日志记录,我是否会得到这些信息,因为我使用的是 JUL 而不是通用日志记录?

谢谢

4

1 回答 1

2

您可以将属性文件放在应用程序中类路径的根目录下。对于 Web 应用程序,其中之一是 WEB-INF/classes

如果启用 TRACE 级别,您将能够看到这些 TRACE 语句

insert into table (name, id) values (?, ?)
.........................

binding '1' to parameter: 2

然而,这可能不是你想要的。如果您希望 sql 本身应该显示包含的绑定参数,那么您可以使用 P6Spy 库。设置 P6Spy 非常简单。您可以在此处查看如何设置。

设置好之后就可以在日志中看到sql了

insert into grouptable (name, id) values ('Name', 1)
于 2012-09-18T12:26:18.883 回答