2012-05-17 69 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>