2017-06-13 80 views
1

我需要在单独的文件中记录信息和错误。我尝试了下面的配置。尽管我获得了CACHE-AUDIT和SERVICE_AUDIT的日志,但是没有任何信息和错误日志可以打印。我在这里错过了一些配置。Logback not for INFO and ERROR

logback.xml

<property name="LOG_HOME" value="E:\\logs"/> 

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </layout> 
</appender> 

<appender name="CACHE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOG_HOME}/cache-service.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>cache-service.%i.log.zip</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>7</maxIndex> 
    </rollingPolicy> 

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>10MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} - %msg%n 
     </Pattern> 
    </encoder> 
</appender> 

<appender name="FILE-ERROR" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOG_HOME}/error.log</file> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <level>ERROR</level> 
    </filter> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>error.%i.log.zip</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>7</maxIndex> 
    </rollingPolicy> 

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>10MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} - %msg%n 
     </Pattern> 
    </encoder> 
</appender> 

<appender name="FILE-INFO" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOG_HOME}/info.log</file> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <level>INFO</level> 
    </filter> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>info.%i.log.zip</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>5</maxIndex> 
    </rollingPolicy> 

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>10MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} - %msg%n 
     </Pattern> 
    </encoder> 
</appender> 

<appender name="SERVICE-AUDIT" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOG_HOME}/service-audit.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>service-audit.%i.log.zip</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>5</maxIndex> 
    </rollingPolicy> 

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>10MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} - %msg%n 
     </Pattern> 
    </encoder> 
</appender> 

<logger name="ch.base.cache" level="debug" additivity="false"> 
    <appender-ref ref="CACHE-AUDIT"/> 
</logger> 

<logger name="ch.base.service.client" level="debug" additivity="false"> 
    <appender-ref ref="SERVICE-AUDIT"/> 
</logger> 

<logger name="ch.base" level="info"> 
    <appender-ref ref="FILE-INFO"/> 
</logger> 

<logger name="ch.base" level="error"> 
    <appender-ref ref="FILE-ERROR"/> 
</logger> 

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

回答

0

你有两个记录器具有相同的名称。与level="error"一个肯定会让另一个得到低于ERROR的东西。虽然我不太清楚为什么你没有看到任何错误记录。

尝试合并这两大块:

<logger name="ch.base" level="info"> 
    <appender-ref ref="FILE-INFO"/> 
</logger> 

<logger name="ch.base" level="error"> 
    <appender-ref ref="FILE-ERROR"/> 
</logger> 

到:

<logger name="ch.base" level="info"> 
    <appender-ref ref="FILE-INFO"/> 
    <appender-ref ref="FILE-ERROR"/> 
</logger> 
+0

我改变了设置为你的描述..现在信息和错误是越来越印在这两个文件..我可以得到信息和单独文件中的错误.. – Trin

+0

你确定吗?信息日志会有INFO和ERROR,但由于阈值过滤器的原因,错误日志应该只有ERROR。无论如何,如果您想在信息日志中使用INFO,请尝试使用“LevelFilter”而不是“ThresholdFilter”。 – jingx

+0

我已经删除了ThresholdFilter ..只有级别被使用..然后也在这两个文件中打印相同的日志..没有根据级别筛选器完成分离.. – Trin

相关问题