Java 是否有类似于滚动输出流的东西?
是否有一个简单的Java OutputStream模仿类似于log4j RollingFileAppender的功能?基本上,它会写入一个最大大小的文件,然后重命名它,开始一个新的文件,等等。我想在从头开始写之前,我会问一下。在普通java中没有类似的东西。一旦你打开了一个文件句柄,它就打开了——这取决于你是否关闭它:)我还没有看到类似的东西,但你可能可以将Apache Commons IO子类化来完成它。有一个提供旋转文件输出流的Java 是否有类似于滚动输出流的东西?,java,Java,是否有一个简单的Java OutputStream模仿类似于log4j RollingFileAppender的功能?基本上,它会写入一个最大大小的文件,然后重命名它,开始一个新的文件,等等。我想在从头开始写之前,我会问一下。在普通java中没有类似的东西。一旦你打开了一个文件句柄,它就打开了——这取决于你是否关闭它:)我还没有看到类似的东西,但你可能可以将Apache Commons IO子类化来完成它。有一个提供旋转文件输出流的。它的用法非常简单: RotationConfig config
。它的用法非常简单:
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))
}
log4j是开源的。你能修改他们已经编写的代码吗?我研究了它,但是滚动文件追加器一点也不像流,它与其他代码部分有很多依赖关系。不过,我可能能够提取一些想法。好主意,这样可以在将流切换到新文件时将缓冲区保留在内存中。谢谢,我会试试的