2014-03-07 70 views
0

我正在使用slf4j & logback進行日誌記錄,並且我的應用程序部署在其他模塊正在使用我的日誌記錄服務的Apache Service Mix中。一切工作正常,當我在獨立的環境中測試它,但我面臨問題時,我部署在服務組合容器。那時,只有根級別的日誌記錄有效,其他日誌級別被忽略。根級別日誌記錄在服務組合中有效

下面是我的logback-test.xml配置,請幫助我在最後4天卡住這個問題。

<!-- This property describes the location of the property file. --> 
<property 
    file="C:/Users/evikdew/ccl_code/log.properties" /> 

<!-- This appender prints on the console. --> 
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 
     </pattern> 
    </encoder> 
</appender> 

<!-- This appender contains the properties for the logs that would be written 
    to a file. --> 
<appender name="FILE" 
    class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOG_DIRECTORY}\${LOG_FILE_NAME}</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>${LOG_FILE_PATTERN}</fileNamePattern> 
     <maxHistory>${MAX_LOG_HISTORY}</maxHistory> 
    </rollingPolicy> 
    <encoder> 
     <pattern>${LOGGING_PATTERN} 
     </pattern> 
    </encoder> 
</appender> 
<logger name="com.ericsson" level="Error" additivity="false"> 
    <appender-ref ref="FILE" /> 
</logger> 
<logger name="com.ericsson" level="INFO" additivity="false"> 
    <appender-ref ref="FILE" /> 
</logger> 
<logger name="com.ericsson" level="DEBUG" additivity="false"> 
    <appender-ref ref="FILE" /> 
</logger> 

<root level="DEBUG"> 
    <appender-ref ref="STDOUT" /> 
</root> 

+0

哪個版本的ServiceMix? –

+0

服務組合版本是:4.5.3。我剛剛檢查過,實際上它無法在其類路徑中找到logback.xml。我試圖在org.ops4j.pax.logging.logback.config.file參數中添加logback.xml位置,但徒勞無功。 – vd86

回答

2

作爲ServiceMix的4.x的是基於Karaf的頂部,標準記錄機制是Pax Logging。 Pax日誌記錄由org.ops4j.pax.logging.cfg文件配置,因爲Karaf使用Configuration Admin Service配置OSGi服務。這就是爲什麼配置文件仍然使用log4j屬性表示法。 如果您需要特殊的appender,其中一些已經包含在MDC appender中用於記錄bundle wise或ZipRollingFileappender。 對Pax Loggin 1.7引入了對外部登錄配置的支持,我認爲,我懷疑它已經包含在ServiceMix 4.5.x中 因此,您必須堅持使用log4j表示法或自己交換Pax Logging版本。