在我们当前的实现中,其中一台服务器具有为 RollingRandomAccessFile 和另一个 RollingFile 设置的 log4j2 配置。如果可能的话,我想知道两者之间的区别以及各自的优缺点。
Thanks
主要区别在于性能:http://logging.apache.org/log4j/2.x/manual/async.html#FileAppender_vs._RandomAccessFileAppender http://logging.apache.org/log4j/2.x/manual/async.html#FileAppender_vs._RandomAccessFileAppender
RandomAccessFileAppender 始终是缓冲的,而 FileAppender 提供了一个配置开关(bufferedIO)。两者都有一个“immediateFlush”配置选项,以防您想确保消息位于磁盘上(例如审核日志记录)。最后,RandomAccessFileAppender 的默认缓冲区大小更大:256*1024 字节与 FileAppender 的 8*1024 字节(两个附加程序缓冲区大小都可以在配置中设置)。
另一件事是,底层实现在一种情况下使用 RandomAccessFile,在另一种情况下使用 OutputStream(顾名思义)。将 RandomAccessFileAppender 与 unix logrotate 实用程序结合使用时存在一个已知问题(https://issues.apache.org/jira/browse/LOG4J2-354 https://issues.apache.org/jira/browse/LOG4J2-354),Log4j 团队建议您使用 RollingRandomAccessFile 进行翻转,并避免使用 unix logrotate 实用程序。显然 FileAppender 可以与 logrotate 结合使用 - 我们还没有听说任何问题。 (由于问题已经提到了两个附加程序的 Rolling... 变体,因此您已经在做正确的事情,我只是认为我应该提到它。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)