有没有滚动的OutputStream?

时间:2010-12-03 21:34:56

标签: java

是否有一个简单的Java OutputStream模仿类似于log4j RollingFileAppender的功能?基本上它会写入一个增长到最大大小的文件,然后重命名它,开始一个新的等等。只是想在我从头开始写之前我会问。

3 个答案:

答案 0 :(得分:0)

在普通的java中没有这样的东西。一旦你有一个文件句柄打开它就打开了 - 你需要关闭它:)

答案 1 :(得分:0)

我没有看到类似的东西,但你可能会将Apache Commons IO ThreadholdingOutputStream子类化为它。

答案 2 :(得分:0)

rotating-fos提供RotatingFileOutputStream。它的用法非常简单:

RotationConfig config = RotationConfig
        .builder()
        .file("/tmp/app.log")
        .filePattern("/tmp/app-%d{yyyyMMdd-HHmmss.SSS}.log")
        .policy(new SizeBasedRotationPolicy(5000 /* 5s */, 1024 * 1024 * 100 /* 100MB */))
        .policy(DailyRotationPolicy.getInstance())
        .build();

try (RotatingFileOutputStream stream = new RotatingFileOutputStream(config)) {
    stream.writer("Hello, world!".getBytes(StandardCharsets.UTF_8))
}