[英]When to use Random Access File Appenders vs. Buffered File Appenders in log4j configuration
兴趣点:
可以使用bufferedIO
属性配置FileAppenders以进行缓冲。 从beta-9开始,缓冲区大小为8 * 1024字节,不可配置。 这将在下一版本中配置。
在引擎盖下,FileAppenders使用java.io.FileOutputStream,它可以包装在BufferedOutputStream中。 RandomAccessFileAppenders写入ByteBuffer,当缓冲区已满或调用flush()
时,ByteBuffer附加到RandomAccessFile的末尾。 应该没有太大差异(除了性能)但FileAppenders有更长的跟踪记录,并且可能仍然存在尚未发现的较新的RandomAccessFileAppender的问题。 翻转似乎适用于两种类型的appender,但可能存在团队尚未了解的极端情况。 (Log4J2正在积极开发中,任何问题都将得到迅速解决。)
可以使用immediateFlush
属性配置RandomAccessFileAppender和FileAppender,以将每个日志事件刷新到磁盘。 我建议您在使用AsyncAppenders或AsyncLoggers时关闭immediateFlush
,这样您就可以利用它们提供的良好批处理行为:异步appender和logger在记录多个事件后可以刷新,并且当队列再次为空时也肯定会刷新一次,这非常有效并同时确保所有日志事件始终保持为磁盘。
随机访问直接写入文件而不进行缓冲。 这比缓冲写入更慢但更可靠,因为缓冲写入可能会在发生崩溃时丢失一些未刷新的写入。 您需要决定哪个对您更重要。 从你的三个清单中不清楚。
编辑人们会期望一个名为RandomAccessAppender
的类会使用随机访问,这意味着没有缓冲,但显然它没有!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.