包含logback的logback不起作用

时间:2015-03-24 02:45:12

标签: logging logback

我使用logback SLF4J作为Web应用程序中的日志框架,我想将不同的逻辑模块分离到不同的logback配置文件,并将它们包含在中央配置文件中。所以我得到logback-spring.xmllogback.xml(中),logback-spring.xml是:

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

应用程序启动时,所有日志记录事件都将写入控制台。我无法弄清楚我的配置有什么问题,有没有人遇到过这个问题?

2 个答案:

答案 0 :(得分:1)

我终于弄明白了这个问题。 logback.xml和logback-spring.xml位于同一目录中,但不在根类路径目录中,它位于log direcotry下,因此当我将include元素的资源属性更改为log /时的logback-spring.xml

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

它完美无缺!

答案 1 :(得分:0)

实际上我们可以注册一个状态监听器来检查logback的内部状态,这样我们就可以找出配置文件中的错误。因为在解析过程中出现警告或错误时,只需在logback上打印内部状态数据在配置文件中,我们不知道在返回初始化时会发生什么。

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

Logback configuration