2013-06-01 1 views
16

私は自分のJava Web appliactionでlogbackを使用しています。ここに私の "logback.xml"ファイルがあります。ログを自動的にgzipするようにログバックを設定するにはどうすればよいですか?

<?xml version="1.0" encoding="UTF-8"?> 
<configuration debug="false"> 

    <property name="LOG_DIR" value="/home/ying/.jetty_logs/vehicle" /> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%date [%thread] %-5level %logger{36}[%L] - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <appender name="LAST" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${LOG_DIR}/last.log</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>last.%d{yyyy-MM}.gz</fileNamePattern> 
      <maxHistory>24</maxHistory> 
     </rollingPolicy> 
     <encoder> 
      <pattern>%date:%msg%n</pattern> 
     </encoder> 
    </appender> 

    <logger name="org.springframework" level="WARN" /> 
    <logger name="org.apache.shiro" level="WARN" /> 
    <logger name="org.hibernate" level="WARN" /> 

    <logger name="ying.car.interceptor.AutoLoginInterceptor" additivity="false" level="INFO"> 
     <appender-ref ref="LAST" /> 
    </logger> 
    <logger name="ying.car.controller.LoginController" additivity="false" level="INFO"> 
     <appender-ref ref="LAST" /> 
    </logger> 
    <logger name="ying.car.controller.LogoutController" additivity="false" level="INFO"> 
     <appender-ref ref="LAST" /> 
    </logger> 

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

</configuration> 

今日は2013年6月1日です。私の古いログはすべて上書きされ、* .gzは作成されません。 誰か助けてください。

+0

を設定して、どのログバックがあなたに通知するかを確認してください。 – Ceki

答えて

22

このようにすると、うまくいくと思います。

<appender name="FILE" 
    class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <File>${LOGDIR}/filename.log</File> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <FileNamePattern>${LOGDIR}/file.%d{yyyy-MM-dd}.%i.log.gz 
     </FileNamePattern> 
     <!-- keep 30 days' worth of history --> 
     <MaxHistory>30</MaxHistory> 
     <!-- or whenever the file size reaches 10MB --> 
     <timeBasedFileNamingAndTriggeringPolicy 
      class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>10MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern>%date [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </encoder> 
</appender> 

上記のコードは、日単位でファイルを圧縮します。ログファイルのサイズが10MBを超える場合。

注:それはなかったかのようにロールオーバーは、次回の起動時に起こるように、私は<cleanHistoryOnStart>true</cleanHistoryOnStart>を追加する「%i」はfilePatternで、それはFILE2など、FILE1とファイル名を反復します

6

てみてくださいを追加しました転覆時に走っていたのではないでしょう。

関連する問題