Jetty 6总是生成调试日志?

时间:2010-07-23 09:03:33

标签: java debugging logging jetty

我使用Jetty 6.1.24开发Web服务,我的代码使用slf4j,就像Jetty一样,并且日志记录工作正常。我想要做的是从我的代码获取调试日志,但不是从Jetty (它太冗长),但我无法阻止它记录调试信息。有系统属性可以设置调试模式(-DDEBUG),但不能取消设置调试模式。

我的回溯日志级别由启动脚本通过设置系统属性“loglevel”来设置,然后将其设置在我的resources / logback.xml中:

<configuration>
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d [%thread] %level %logger - %m%n</Pattern>
    </layout>
  </appender>
  <root level="${loglevel:-INFO}">
    <appender-ref ref="CONSOLE"/>
  </root>
</configuration>

Jetty要么始终生成调试日志,如果未启用调试,则记录器会忽略该日志,否则它将使用logger.isDebugEnabled()来设置调试模式。有没有人对如何使这个工作有任何想法?

3 个答案:

答案 0 :(得分:4)

将slf4j的jar放入{jetty} / lib / ext后,我遇到了同样的问题 我通过将此logback.xml文件放在{jetty} / resources

中解决了这个问题
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

请注意'level =“info”'
说明
在此配置中,Jetty使用Logger实现Slf4jLog 反过来,Slf4jLog委托Logback的实现。
logback.xml告诉我们记录日志级别并使用STDOUT 从此处可以看到标准的Jetty行为,但您可以通过logback.xml配置日志记录级别 与默认配置一样,如果需要,可以使用jetty-logging.xml 当然,你可以绕过Jetty的PrintStreams并使用Logback的Appenders 这里是您使用jetty-logging.xml时的流程:

SomeClass --> Slf4JLog --> ConsoleAppender--> STDOUT --> RolloverFileOutputStream
 (Jetty)      (Jetty)         (Logback)        (OS)           (Jetty)


修订
码头7.2.2
slf4j 1.6.1
Logback 0.9.26

答案 1 :(得分:1)

仅在使用StdErr记录器时才使用-DDEBUG选项。如果设置为使用slf4j日志记录(例如,您已将slf4j添加到类路径中),那么所有配置都将通过slf4j实现进行处理,系统属性将被忽略。

您要做的是配置logback以关闭jetty日志类别的调试。

喜欢的东西     <logger name="org.mortbay.log" level="INFO" />

答案 2 :(得分:0)