如何在嵌入式Jetty中启用DEBUG级别日志记录?

31

我正在尝试在嵌入的Jetty实例中将日志级别设置为DEBUG

http://docs.codehaus.org/display/JETTY/Debugging上的文档指出 -

在调用new org.mortbay.jetty.Server()之前,调用SystemProperty.set("DEBUG", "true")。

我不确定SystemProperty类是什么,似乎没有任何文档记录。 我尝试使用System.setProperty(),但没有起作用。


Jetty的哪个版本?你在类路径上有哪些日志框架? - Tim
我目前正在使用Jetty 7.5.4,但实际上可以使用任何版本。对于日志记录,我在非Jetty代码中使用log4j,并让Jetty中的SLF4J默认为NOP日志记录器实现(它将写入调试控制台,这正是我需要的)。 - HolySamosa
4个回答

27

添加此内容

-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog 
-Dorg.eclipse.jetty.LEVEL=DEBUG

Eclipse配置截图


2
+1,这是唯一对我有效的解决方案,尽管我不明白为什么第一个选项需要第二个选项才能工作... - Carlos Silva
我花了4个小时才找到这个,但终于找到了。谢谢。 - Richard

27

我的问题在Jetty邮件列表中由Joakim Erdfelt回答:

你正在查看旧的Jetty 6.x文档,位于docs.codehaus.org。

DEBUG日志记录只是一个由您选择使用的日志记录实现确定的日志记录级别。

-D{classref}.LEVEL={level}

其中,{classref}是您想要设置级别的类引用,以及所有子类引用和{level}是以下值之一:ALL、DEBUG、INFO、WARN

示例: -Dorg.eclipse.jetty.LEVEL=INFO - 这将为所有Jetty包/类启用INFO级别日志记录。 -Dorg.eclipse.jetty.io.LEVEL=DEBUG - 这将仅为IO类启用DEBUG级别日志记录 -Dorg.eclipse.jetty.servlet.LEVEL=ALL - 这将为servlet包启用所有日志记录(跟踪事件、内部忽略的异常等)。 -Dorg.eclipse.jetty.util.thread.QueuedThreadPool.LEVEL=ALL - 这将仅为特定类启用 level ALL+。


16

如果您只想快速将日志消息输出到stderr,请在Java命令行中添加类似以下的内容:

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

6
您可以使用以下代码片段启用日志记录:
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.StdErrLog;
 .
 .
 .
StdErrLog logger = new StdErrLog();
logger.setDebugEnabled(true);
Log.setLog(logger);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接