2010-07-23 70 views
0

我使用Jetty 6.1.24來開發Web服務,我的代碼使用slf4j,就像Jetty一樣,並且日誌記錄工作正常。我想要做的是從我的代碼獲取調試日誌記錄,但不是來自Jetty(它太冗長),但我無法阻止它記錄調試信息。有系統屬性可以設置調試模式(-DDEBUG),但不能取消調試模式。Jetty 6總是生成調試日誌?

我的logback日誌級別由啓動腳本設置通過設置系統屬性「日誌級別」,這反過來將它在我的資源/ 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> 

碼頭或者總是生成調試日誌,如果未啓用調試,則記錄器將忽略它,否則它將使用logger.isDebugEnabled()來設置它的調試模式。有沒有人有任何想法如何讓這個工作?

回答

4

我不得不把SLF4J的罐子在{}碼頭/ lib/ext目錄後,同樣的問題。
我解決它放置在{}碼頭這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> 

注意 '級別= 「信息」'。

說明
在此配置碼頭使用的記錄器實現Slf4jLog。
Slf4jLog反過來代表Logback的實現。
logback.xml告訴logback日誌級別並使用STDOUT。
從這裏開始,除了可以通過logback.xml配置日誌級別之外,還存在標準的Jetty行爲
與默認配置中一樣,如果需要,可以使用jetty-logging.xml。
當然,您可以繞過Jetty的PrintStreams並使用Logback的Appender。
這裏的情況下,流量使用碼頭,logging.xml:

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


修訂
碼頭7.2.2
SLF4J 1.6.1
的logback 0.9.26

+0

非常感謝您的回答。 – trojanfoe 2011-01-05 15:02:48

1

,如果你使用的標準錯誤記錄的-DDEBUG選項僅使用。如果設置爲使用slf4j日誌記錄(例如,您已將slf4j添加到您的類路徑中),那麼所有配置都通過slf4j實現進行處理,系統屬性將被忽略。

你想做什麼配置logback關閉碼頭日誌類別上的調試。

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

+0

這看起來像一個合理的答案 - 謝謝。我會仔細研究並儘快回覆。 – trojanfoe 2010-08-12 07:13:17