2015-03-24 2 views
0

Я использую logback SLF4J как фреймворк регистрации в веб-приложении, и я хочу разделить другой логический модуль на другой конфигурационный файл журнала и включить их в центральный файл конфигурации. так что я получил logback-spring.xml и logback.xml (Central), то logback-spring.xml является:logback included logger не работает

<included> 
    <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="INFO" additivity="false"> 
    <appender-ref ref="REST" /> 
    </logger> 

    <logger name="org.springframework" level="INFO" additivity="false"> 
    <appender-ref ref="REST" /> 
    </logger> 
</included> 

и logback.xml является:

<configuration scan="true" scanPeriod="30 seconds"> 
<contextName>TestSuite</contextName> 

<property scope="context" resource="properties/logback.properties" /> 


<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern>%d{HH:mm:ss.SSS} %-5level %logger{80} [%file:%line] - %msg%n</Pattern> 
    </encoder> 
</appender> 

<appender name="REST" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <File>${LOG_HOME:-${java.io.tmpdir}}/RestApi.txt</File> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <FileNamePattern>${LOG_HOME:-${java.io.tmpdir}}/%d{yyyy-MM/ww,aux}/RestApi.%d{yyyy-MM-dd}.log.gz</FileNamePattern> 
     <MaxHistory>30</MaxHistory> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%date{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80} - %msg%n</pattern> 
    </encoder> 
</appender> 

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

<include optional="true" resource="logback-spring.xml" /> 

При запуске приложения, все лесозаготовительные события записываются в консоли. Я не могу понять, что не так с моей конфигурацией, кто-нибудь столкнулся с этой проблемой?

ответ

0

На самом деле мы можем зарегистрировать прослушиватель статуса, чтобы проверить внутренний статус журнала, чтобы мы могли выяснить, что не так в файле конфигурации. «Из-за того, что logback просто печатает свои внутренние данные о состоянии на консоли, когда во время разбора возникают предупреждения или ошибки файла конфигурации, мы не знаем, что происходит при инициализации журнала в противном случае.

<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> 

Logback configuration

1

Я, наконец, выяснил проблему. Logback.xml и logback-spring.xml расположены в том же каталоге, но не находятся в корневой директории пути к корневому каталогу, поэтому он меняет атрибут ресурса элемента include на log/logback-spring.xml

<include optional="true" resource="log/logback-spring.xml" /> 

Это прекрасно работает!

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