2010-07-23 4 views
0

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

Мой уровень журнала 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 или всегда порождающие журналы отладки , которые затем игнорируются логгером, если debug не включен, или же он использует logger.isDebugEnabled(), чтобы установить его режим отладки. Кто-нибудь есть идеи о том, как заставить это работать?

ответ

4

У меня был тот же вопрос после размещения банку SLF4J в {молы}/Lib/доб.
Я решил его, поместив этот logback.xml файл {причалу}/ресурсы

<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> 

Обратите внимание на "уровень = "Информация".

Объяснение:
В этой конфигурации Jetty использует в качестве реализации Logger Slf4jLog.
Slf4jLog, в свою очередь, делегирует реализацию Резервирования.
Logback.xml сообщает logback уровень журнала и использует STDOUT.
Здесь присутствует стандартное поведение Jetty, за исключением того, что вы можете настраивать уровни ведения журнала через logback.xml
Как и в конфигурации по умолчанию, вы можете использовать jetty-logging.xml, если хотите.
Конечно, вы можете обойти PrintStreams Jetty и использовать Appback Logback.
Здесь поток в случае использования пристани-logging.xml:

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


Ревизии:
Jetty 7.2.2
SLF4J 1.6.1
Logback 0.9.26

+0

Большое спасибо за ваш ответ. – trojanfoe

0

Смотрите здесь о том, как контролировать ведение журнала: http://docs.codehaus.org/display/JETTY/Debugging

+0

Это не работает. Я боюсь - как я уже упоминал, Jetty генерирует сообщения отладочного журнала, даже когда «-DDEBUG» не указывается в командной строке. – trojanfoe

1

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

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

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

+0

Это выглядит разумным ответом - спасибо. Я займусь этим и вернусь к вам в ближайшее время. – trojanfoe

Смежные вопросы