2

有没有办法使用 实现文件追加器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中添加了新功能请求。

4

1 回答 1

1

从最新的 beta(beta-9,几天后发布)开始,用户无法控制 FileAppender 或 RandomAccessFileAppender 的缓冲区大小。(FastFileAppender 在 beta-9 中已重命名为 RandomAccessFileAppender。)

仅供参考,FileAppender 的缓冲区大小为 8192 字节,对于 RandomAccessFileAppender,缓冲区大小为 262,144 字节。

如果您需要控制缓冲区大小,请在 log4j2 问题跟踪器或用户邮件列表上提出功能请求。


更新:LOG4J2-401 已在 RC1 中修复。从 RC2 开始,缓冲区大小也可以为 RollingRandomAccessFileAppender 和 RollingFileAppender 配置。

于 2013-09-15T06:54:37.400 回答