有没有办法使用 实现文件追加器log4j2
,它将日志存储在内存中特定大小,然后将日志写入文件(本地/远程)。
有什么办法可以做到这一点?
在 log4j2 文档中:
类似于FastFileAppender
标准,FileAppender
除了它总是被缓冲(这不能被关闭)并且在内部它使用 aByteBuffer + RandomAccessFile
而不是 a BufferedOutputStream
。与使用“ ” bufferedIO的 FileAppender 相比,我们看到了20-200%的性能提升:(布尔值)如果为 true - 默认情况下,记录将写入缓冲区,当缓冲区已满时,数据将写入磁盘,或者如果是 immediateFlush设置,当记录被写入时。文件锁定不能与 bufferedIO 一起使用。性能测试表明,即使启用了 immediateFlush,使用缓冲 I/O 也会显着提高性能。立即冲洗:bufferedIO=true
(布尔值)当设置为 true - 默认值时,每次写入后都会刷新。这将保证数据写入磁盘,但可能会影响性能。每次写入后刷新仅在将此附加程序与同步记录器一起使用时才有用。异步记录器和附加程序将在一批事件结束时自动刷新,即使 immediateFlush 设置为 false。这也保证了数据写入磁盘,但效率更高。
通过使用上述属性,我们可以控制向文件写入数据,但是我没有找到将日志存储在内存中,然后在达到特定缓冲区大小后将其记录下来的方法。
更新:在 LOG4J2-jira-project: LOG4J2-401中添加了新功能请求。