eclipselink.logging.file 对我不起作用



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

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

<property name="eclipselink.target-database" value="MySQL"/>
<property name="eclipselink.logging.logger" value="DefaultLogger"/>
<property name="eclipselink.logging.file" value="logseclipselink.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 正在正确读取属性并创建文件,但在某个地方输出被重定向到 stdout。

附言EAR 项目中只有一个持久性.xml这是 Glassfish 实例中部署的唯一项目。

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

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

请记录一个错误。

以下内容持保留态度,我偷看了一下来源,但没有花时间完全"摸索"它。 我遇到了同样的问题,这是我发现的(这是在没有运行 GlassFish 的情况下进行单元测试,所以在这种情况下是 Java SE(。

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

使用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

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

在 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

最新更新