2012-05-17 91 views
1

嗨有什麼方式設置應用程序啓動時滾動日誌或如果是新的一天,並保持30天或1個月的歷史記錄(不是30個文件)由配置文件。我找了幾個小時,但沒有找到任何東西。可能這種方式不存在,需要寫。Logback - 如何通過配置文件設置新的開始和新的日誌

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

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>/logs/server.log</file> 
     <encoder> 
      <pattern>%d [%thread] %-5level %logger{50} - %msg%n 
      </pattern> 
     </encoder> 

     <!-- Join this time based rolling with--> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>/logs/server.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 
      <!-- Mean 30 days not 30 files --> 
      <maxHistory>30</maxHistory> 
     </rollingPolicy> 

     <!-- New start baser Rolling--> 
     ... 
    </appender> 

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

</configuration> 
+0

軋製時每天完成,30個文件就相當於30天。因此,我不確定我是否理解你的問題。 – Ceki

+0

我需要對START和NEW DAY做出反應。所以當我在當天開始幾次時,會有更多的文件。像這樣:30天= 30個文件+ 10個重新啓動= 10個文件=> 40個月的文件。我想保留所有這些文件,除非有30天以上的舊文件(我在創建文件時取日期) – Perlos

+0

查看上面的配置文件,我可以肯定的是,當您重新啓動應用程序時,您將*不*擁有新的日誌文件。 – Ceki

回答

0

這個問題是重複的,並回答了https://stackoverflow.com/a/30801658/844648

我終於弄明白。我可以按照規模,時間和時間開始。這裏是解決方案:

1號創建你自己的類

@NoAutoStart 
public class StartupSizeTimeBasedTriggeringPolicy<E> extends SizeAndTimeBasedFNATP<E> { 

    private boolean started = false; 

    @Override 
    public boolean isTriggeringEvent(File activeFile, E event) { 
     if (!started) { 
      nextCheck = 0L; 
      return started = true; 
     } 

     return super.isTriggeringEvent(activeFile, event); 
    }; 
} 

二路配置lockbax

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOGS_DIR}/${FILE_NAME}.log</file> 
    <encoder> 
     <pattern>%d [%thread] %-5level %logger{50} - %msg%n</pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>${LOGS_DIR}/${FILE_NAME}.%d{yyyy-MM-dd}_%d{HHmmss,aux}.%i.log.zip</fileNamePattern> 
     <maxHistory>30</maxHistory> 
     <TimeBasedFileNamingAndTriggeringPolicy class="my.StartupSizeTimeBasedTriggeringPolicy"> 
      <MaxFileSize>250MB</MaxFileSize> 
     </TimeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
</appender> 
相關問題