【问题标题】:How to enable DEBUG level logging with Jetty embedded?如何启用嵌入 Jetty 的调试级别日志记录?
【发布时间】:2012-03-03 09:30:34
【问题描述】:

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

http://docs.codehaus.org/display/JETTY/Debugging 的文档说 -

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

我不确定SystemProperty 类是什么,它似乎没有在任何地方记录。我试过System.setProperty(),但没有成功。

【问题讨论】:

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

标签: jetty slf4j


【解决方案1】:

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

您正在 docs.codehaus.org 上查看旧的 Jetty 6.x 文档。

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

-D{classref}.LEVEL={级别}

其中 {classref} 是您要设置级别的类引用, 和所有子类参考。 {level} 是 ALL、DEBUG、 信息,警告

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

【讨论】:

    【解决方案2】:

    添加此

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

    【讨论】:

    • +1,这是唯一对我有用的解决方案,虽然我不明白为什么第二个选项需要第一个选项才能工作......
    • 我花了 4 个小时才找到这个,但它就在这里。谢谢。
    【解决方案3】:

    如果您只想快速将日志消息发送到 stderr,请在 java 命令行中添加类似这样的内容:

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

    【讨论】:

      【解决方案4】:

      您可以使用这个 sn-p 来启用日志记录:

      import org.eclipse.jetty.util.log.Log;
      import org.eclipse.jetty.util.log.StdErrLog;
       .
       .
       .
      StdErrLog logger = new StdErrLog();
      logger.setDebugEnabled(true);
      Log.setLog(logger);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        相关资源
        最近更新 更多