Java如何创建滚动日志文件?

在此示例中,我们创建滚动文件或日志文件序列。我们不仅可以限制文件大小(请参阅如何限制日志文件的大小),还可以使日志文件滚动。如果我们使用单个日志文件,这将防止丢失重要的日志消息。

当使用多个文件时,日志文件名中将包含一个从0到的序列号N-1。如果将计数设置为5,则将有日志文件,例如myapp.log.0,myapp.log.1最大为myapp.log.5。

如果第一个日志文件(myapp.log.0)即将满,则myapp.log.1在将日志写入第一个日志文件之前,它将重命名为()。日志始终写入第一个文件(myapp.log.0)。

要按顺序读取日志消息,您需要从最高到最低的序列号开始。

package org.nhooo.example.logging;

import java.util.logging.Logger;
import java.util.logging.FileHandler;
import java.util.logging.SimpleFormatter;
import java.io.IOException;

public class RollingLogFile {
    // 设置较小的日志文件大小以演示滚动日志文件。
    public static final int FILE_SIZE = 1024;

    public static void main(String[] args) {
        Logger logger = Logger.getLogger(RollingLogFile.class.getName());

        try {
            // 创建具有5个日志文件的FileHandler实例
            // 序列。
            FileHandler handler = new FileHandler("myapp.log", FILE_SIZE, 5, true);
            handler.setFormatter(new SimpleFormatter());
            logger.addHandler(handler);
            logger.setUseParentHandlers(false);
        } catch (IOException e) {
            logger.warning("Failed to initialize logger handler.");
        }

        logger.info("Logging information message.");
        logger.warning("Logging warning message.");
    }
}

通过多次运行该程序,您将看到一个一个地创建日志文件。