Jetty 6 всегда генерирует журналы отладки? - PullRequest
0 голосов
/ 23 июля 2010

Я использую Jetty 6.1.24 для разработки веб-службы, и мой код использует slf4j, как это делает Jetty, и ведение журнала работает нормально. Что я хочу сделать, так это получить журнал отладки из моего кода , но не из Jetty (это слишком многословно), но я не могу остановить его от записи отладочной информации. Существуют системные свойства для установки режима отладки (-DDEBUG), но не для сброса режима отладки.

Мой уровень журнала logback устанавливается стартовым скриптом, устанавливая системное свойство 'loglevel', и это, в свою очередь, устанавливает его в моих ресурсах / 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 ]

4 голосов
/ 30 декабря 2010

У меня возникла такая же проблема после помещения банки slf4j в {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 говорит, чтобы выполнить logback уровень журнала и использовать STDOUT.
Отсюда стандартное поведение Jetty, за исключением того, что вы можете настроить уровни ведения журнала через logback.xml
Как и в конфигурации по умолчанию, вы можете использовать jetty-logging.xml, если хотите.
Конечно, вы можете обойти Jetty PrintStreams и использовать Appback'ы Logback.
Вот поток, если вы используете 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 голос
/ 12 августа 2010

Параметр -DDEBUG используется только при использовании регистратора StdErr. Если он настроен на использование ведения журнала slf4j (например, вы добавили slf4j в ваш путь к классам), тогда вся конфигурация обрабатывается вашей реализацией slf4j, а системные свойства игнорируются.

Что вы хотите сделать, сконфигурировать logback, чтобы отключить отладку для категории журнала причала.

что-то вроде <logger name="org.mortbay.log" level="INFO" />

0 голосов
/ 23 июля 2010

Смотрите здесь, как управлять регистрацией: http://docs.codehaus.org/display/JETTY/Debugging

...