是否有一个简单的Java OutputStream可以模仿类似于log4j RollingFileAppender的功能?基本上,它会写入一个最大大小的文件,然后将其重命名,开始一个新文件等。在从头开始编写之前,我想问一下。
是否有一个简单的Java OutputStream可以模仿类似于log4j RollingFileAppender的功能?基本上,它会写入一个最大大小的文件,然后将其重命名,开始一个新文件等。在从头开始编写之前,我想问一下。
纯Java中没有这样的东西。一旦你打开了文件句柄,它就是打开状态 - 你需要自己关闭它 :)
我没有见过类似的东西,但你可能可以通过子类化Apache Commons IO ThreadholdingOutputStream
来实现它。
有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))
}