Java Logback-如何通过配置文件设置具有新开始和新日期的滚动日志

Java Logback-如何通过配置文件设置具有新开始和新日期的滚动日志,java,logging,Java,Logging,嗨,有没有办法设置在应用程序启动时滚动日志,或者如果是新的一天,通过配置文件将历史记录保留30天或1个月(不是30个文件)。我找了好几个小时,但什么也没找到。可能这种方式不存在,需要编写 %d[%thread]-5级别%logger{50}-%msg%n /日志/server.log %d[%thread]-5级别%logger{50}-%msg%n /日志/服务器。%d{yyyy-MM-dd}.log.zip 30 ... 此问题重复并由以下人员回答: 我终于明白了。我可以按大小、时间和启动

嗨,有没有办法设置在应用程序启动时滚动日志,或者如果是新的一天,通过配置文件将历史记录保留30天或1个月(不是30个文件)。我找了好几个小时,但什么也没找到。可能这种方式不存在,需要编写


%d[%thread]-5级别%logger{50}-%msg%n
/日志/server.log
%d[%thread]-5级别%logger{50}-%msg%n
/日志/服务器。%d{yyyy-MM-dd}.log.zip
30
...

此问题重复并由以下人员回答:

我终于明白了。我可以按大小、时间和启动进行滚动。以下是解决方案:

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 );
    };
}
@NoAutoStart
公共类StartupSizeTimeBasedTriggeringPolicy扩展了SizeAndTimeBasedFNATP{
private boolean start=false;
@凌驾
公共布尔isTriggeringEvent(文件activeFile,E事件){
如果(!已启动){
nextCheck=0升;
返回开始=真;
}
返回super.isTriggeringEvent(activeFile,event);
};
}
2配置锁BAX

<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>

${LOGS\u DIR}/${FILE\u NAME}.log
%d[%thread]-5级别%logger{50}-%msg%n
${LOGS\u DIR}/${FILE\u NAME}.%d{yyyyy-MM-dd}{uu%d{HHmmss,aux}.%i.log.zip
30
250MB

此问题重复并由以下人员回答:

我终于明白了。我可以按大小、时间和启动进行滚动。以下是解决方案:

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 );
    };
}
@NoAutoStart
公共类StartupSizeTimeBasedTriggeringPolicy扩展了SizeAndTimeBasedFNATP{
private boolean start=false;
@凌驾
公共布尔isTriggeringEvent(文件activeFile,E事件){
如果(!已启动){
nextCheck=0升;
返回开始=真;
}
返回super.isTriggeringEvent(activeFile,event);
};
}
2配置锁BAX

<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>

${LOGS\u DIR}/${FILE\u NAME}.log
%d[%thread]-5级别%logger{50}-%msg%n
${LOGS\u DIR}/${FILE\u NAME}.%d{yyyyy-MM-dd}{uu%d{HHmmss,aux}.%i.log.zip
30
250MB

每天滚动时,30个文件相当于30天。所以,我不确定我是否理解你们的问题。我需要做出反应,开始新的一天。因此,当我在一天中开始几次时,a将有多个文件。类似这样的情况:30天=30个文件+10个重新启动=10个文件=>每月40个文件。我想保留所有这些文件,除非有超过30天的时间(我以文件创建日期为准)查看上面的配置文件,我可以肯定,当您重新启动应用程序时,不会有新的日志文件。@Ceki:我知道,因为问一下如何做如果您知道重新启动应用程序时不会有新的日志文件,那么你的问题就没有意义了。当每天滚动时,30个文件相当于30天。所以,我不确定我是否理解你们的问题。我需要做出反应,开始新的一天。因此,当我在一天中开始几次时,a将有多个文件。类似这样的情况:30天=30个文件+10个重新启动=10个文件=>每月40个文件。我想保留所有这些文件,除非有超过30天的时间(我以文件创建日期为准)查看上面的配置文件,我可以肯定,当您重新启动应用程序时,不会有新的日志文件。@Ceki:我知道,因为问一下如何做如果您知道重新启动应用程序时不会有新的日志文件,那么你的问题就没有意义了。