使用 java.util.logging 在 eclipse 服务器端日志中进行 GWT 开发

GWT development in eclipse server-side logging using java.util.logging

我一直在使用 eclipse (4.4) 和 GWT (2.6.0) 开发我的 Web 应用程序。我有一个外部 jar,它包含纯 java 中的一些功能,还有一个在服务器部分使用这个 jar 的 GWT 项目 (services/servlets)。 GWT 项目是一个纯eclipse 项目,我后来及时将其转换为maven 项目。这个 jar 是用 maven 构建的,并填充到 src/main/webapp/WEB-INF/lib/ 目录,在那里它就像一个魅力。

简短版本: java.util.logging jar 或 servlet 中生成的消息在开发过程中被忽略,而不是记录到 eclipse 控制台。

长版: jar 和 GWT servlet 中的消息记录是使用 java.util.logging 实现的。问题是,在开发过程中,我只能看到一些来自 GWT 编译过程的消息和库解析消息,这些消息不是来自 java.util.logging 设施(例如,其中有一个 DEBUG,它不存在于 java.util.logging),但没有来自我的实际代码或 jar。当我在 eclipse 的运行配置中将以下内容添加到 VM 参数时,我能够从我的代码中看到一些信息消息,但没有 FINE、FINER 和 FINEST 级别,也没有来自 jar 的消息:

-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog -D{classref}.LEVEL=DEBUG

我也试过把下面的logging.properties文件放在不同的地方,比如src/main/resources、src/main/webapp/WEB-INF/lib/、src/main/webapp/WEB-INF/classes/,但是以上都不行远.

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

.level= ALL

java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

我还没有在外部部署应用程序,所以我不知道它在 e 中的表现如何。 G。 Tomcat 环境。最令人沮丧的是,我已经在网上搜索了几个小时,但还没有找到任何接近于在我当前的 IDE 配置中启用日志记录和控制日志级别的目标。

来自 GWT 本身的客户端日志记录很有魅力。

非常感谢有关此主题的任何帮助!提前致谢:-)

编辑:根据 Joakim Erdfelt 和 Thomas Broyer 的评论,我做了一个实验,排列了几个不同的 Jetty 日志记录参数,我通过 eclipse 运行配置中的 -D 参数传递给 VM(我发现它们 here).

以下是结果。主要目标是解锁所有级别的日志记录。

  1. 无 Jetty 日志记录参数 -> 工作级别:严重、警告、信息。 完整的虚拟机参数:

    -Xmx2048m -XstartOnFirstThread

  2. java.util.logging.config.file(文件在/src/main/resources/logging.properties,试过src/main/resources/logging.properties, /src/main/resources/logging.properties, logging.properties) -> 没有关卡工作。

    -Xmx2048m -XstartOnFirstThread -Djava.util.logging.config.file=src/main/resources/logging.properties

  3. -D{classref}.LEVEL=ALL-D{classref}.LEVEL=FINEST -> 工作级别:严重、警告、信息。

    -Xmx2048m -XstartOnFirstThread -D{classref}.LEVEL=ALL

  4. 这也没什么改变。可见级别有:SEVERE、WARNING、INFO。 完整的虚拟机参数:

    -Xmx2048m -XstartOnFirstThread -D{classref}.LEVEL=ALL -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StrErrLog

伙计们,问题仍然悬而未决。显然日志记录有效,但我无法正确设置级别。我一定遗漏了一些明显的东西......

显然,在我使用的配置中,不可能告诉 GWT 的嵌入式 Jetty 使用 java.util.logging 框架。我发现 GWT 团队决定不启用它至少可以说有点奇怪,因为(模拟)java.util.logging 框架用于客户端日志记录。因此,自然不会在应用程序中混合使用两种不同的登录方式,并且对 servlet 也使用 java.util.logging。很可惜。感谢 Joakim 指出这一点。