2017-06-13 13 views
1

情報とエラーを別々のファイルに記録する必要があります。私は以下の設定を試みました。私はCACHE-AUDITとSERVICE_AUDITのログを取得しましたが、情報とエラーログのために何も印刷されません。私はここにいくつかの設定がありません。INFOと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

同じ名前を持つ2つのロガーを持っています。 level="error"のものは確かに他のものがERRORの下に何かを得るのを防ぐでしょう。なぜ私はどちらのエラーログも表示されないのはなぜか分かりませんが。

これら二つのブロックマージしてみてください。私は得ることができます..あなたの説明として、私は今の情報とエラーが両方のファイルに印刷されたばかります。..設定を変更し

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

:へ

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

を情報と別のファイルのエラー.. – Trin

+0

本当ですか?情報ログにはINFOとERRORの両方がありますが、エラーログにはしきい値フィルタがあるためにエラーが発生するだけです。とにかく、情報ログにINFOが正確に必要な場合は、ThresholdFilter'の代わりに 'LevelFilter'を試してみてください。 – jingx

+0

私はThresholdFilterを削除しました。レベルのみが使用されます。同じログが両方のファイルに出力されます..レベルフィルタに基づいて分離が行われません。 – Trin

関連する問題