我已經使用RollingFileAppender和TimeBasedRollingPolicy,以便在午夜創建一個新的日誌文件並保留舊的日誌10天。 在午夜創建一個新的日誌文件,但舊的日誌文件會立即刪除,有時甚至在幾分鐘後刪除。logback:TimeBasedRollingPolicy每日滾動工作,但所有舊日誌文件被刪除
public static void init(String logfilename,String loggername,String pattern) throws Exception {
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
logfilename = new File(logfilename).getCanonicalPath();
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(context);
encoder.setPattern(pattern);
encoder.start();
RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<>();
rollingFileAppender.setContext(context);
rollingFileAppender.setName(loggername);
rollingFileAppender.setEncoder(encoder);
rollingFileAppender.setAppend(true);
rollingFileAppender.setFile(logfilename+".log");
TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
rollingPolicy.setContext(context);
rollingPolicy.setParent(rollingFileAppender);
rollingPolicy.setFileNamePattern(logfilename+".%d{yyyy-MM-dd}.log");
rollingPolicy.setMaxHistory(10);
rollingPolicy.setTotalSizeCap(FileSize.valueOf("100MB"));
rollingPolicy.setCleanHistoryOnStart(false);
rollingPolicy.start();
rollingFileAppender.setRollingPolicy(rollingPolicy);
rollingFileAppender.start();
Logger logger = (Logger)LoggerFactory.getLogger(loggername);
logger.setAdditive(false);
logger.setLevel(Level.INFO);
logger.detachAndStopAllAppenders();
logger.addAppender(rollingFileAppender);
}
我認爲在這種情況下,MaxHistory應該表示10天,但它不起作用。
您正在設置每日過期期限(這是從fileNamePattern:'%d {yyyy-MM-dd}''推出的)以及'maxHistory',它應該保留10天的歸檔文件。但是你也指定了一個'totalSizeCap';如果超過此限制,則logback將刪除已存檔的文件。這個帽子可能超過了嗎? – glytching
你可以嘗試刪除行'rollingPolicy.setTotalSizeCap(FileSize.valueOf(「100MB」));'?換句話說,你能檢查文件大小是否沒有達到這個限制嗎? –
我allready嘗試沒有totalSizeCap但結果相同。而且100MB的限制也沒有達到。 –