0

我在一个新项目中使用 Eclipselink 2.3.0,该项目部署在 EAR 文件中的 Glassfish 3.1.2 中。

这些是我的 persistence.xml 中定义的所有属性:

<property name="eclipselink.target-database" value="MySQL"/>
<property name="eclipselink.logging.logger" value="DefaultLogger"/>
<property name="eclipselink.logging.file" value="\logs\eclipselink.log"/>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="eclipselink.logging.parameters" value="true"/>
<property name="eclipselink.logging.timestamp" value="true"/>
<property name="eclipselink.logging.thread" value="true"/>
<property name="eclipselink.logging.session" value="true"/>
<property name="eclipselink.logging.exceptions" value="true"/>

除了 eclipselink.logging.file 之外,所有属性都按预期工作。它会创建文件“\logs\eclipselink.log”,但它始终是空的,并且日志记录输出到标准输出。

我尝试从 DefaultLogger 更改为 JavaLogger,并将文件名更改为其他方向的斜线等。我尝试的所有操作都会导致一个空的日志文件,并且日志记录输出会转到 stdout。

关于为什么会发生这种情况的任何想法?在我看来,EclipseLink 正在正确读取属性并创建文件,但在某处输出被重定向到标准输出。

PS EAR项目中只有一个persistence.xml,并且这是Glassfish实例中部署的唯一项目。

4

3 回答 3

1

从处理属性的代码来看,它似乎可能是一个错误。您是否使用托管或应用程序托管的持久性单元?

我的猜测是,如果您创建自己的 DefaultSessionLog 子类,则将应用文件属性。您也可以尝试在 SessionCustomizer 中设置日志文件。

请记录一个错误。

于 2012-05-15T13:20:00.050 回答
0

对以下内容持怀疑态度,我偷看了一下来源,但没有花时间完全“了解”它。我遇到了同样的问题,这就是我发现的(这是没有运行 GlassFish 的单元测试,所以在这种情况下是 Java SE)。

似乎 DefaultLogger 似乎只是记录到标准输出。我认为代码只能处理一个作家,也许标准输出总是最后一个作家集?

使用 JavaLogger,我一开始也发现它会创建 eclipselink.logging.file 文件,但不会在其中记录任何内容。我认为这是因为创建了文件流并将其提供给 JavaLogger,但它忽略了它。我认为它确实只是将所有内容传递给 java.util.logging 系统。所以我需要做的是使用 java.util.logging 属性来控制输出文件名(通过 java.util.logging.FileHandler)和日志量:

这是我的日志记录属性的子集(要传递到 JVM 或使用 LogManager.getLogManager().readConfiguration 手动加载):

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.FileHandler.level = FINEST
java.util.logging.FileHandler.pattern = mylogfile%u.%g.log
java.util.logging.ConsoleHandler.level = FINEST
org.eclipse.persistence.default.level = FINE
org.eclipse.persistence.session.level = FINE

同样在我的 persistence.xml 文件中,我不再设置 eclipselink.logging.file。

于 2014-09-12T01:43:46.190 回答
0

此属性在 Java SE 环境中使用时适用。

来源:https ://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/p_logging_file.htm

对于 Java EE 应用程序,有“ServerLogger”。

https://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging#Server_Logging

于 2019-02-25T11:26:13.443 回答