我正在使用slf4j& logback和我的应用程序的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 :(得分:2)
由于Servicemix 4.x基于Karaf,标准日志记录机制为Pax Logging。 Pax Logging由org.ops4j.pax.logging.cfg文件配置,因为Karaf使用Configuration Admin Service配置OSGi服务。这就是配置文件仍然使用log4j属性表示法的原因。 如果你需要特殊的appender,有些已经被包含在内,就像一个用于日志捆绑的MDC appender,或ZipRollingFileappender。 我认为Pax Loggin 1.7引入了对外部logback配置的支持,我怀疑它已经包含在ServiceMix 4.5.x中了 因此,您必须坚持使用log4j表示法或自行交换Pax Logging版本。