【问题标题】:What is the difference between RollingFile and RollingRandomAccessFile in log4j2 configurationlog4j2配置中RollingFile和RollingRandomAccessFile有什么区别
【发布时间】:2015-01-08 09:34:01
【问题描述】:

在我们当前的实现中,其中一个服务器为 RollingRandomAccessFile 和另一个 RollingFile 设置了 log4j2 的配置。如果可能的话,我想知道两者之间的区别以及各自的优缺点。

谢谢

【问题讨论】:

    标签: log4j2


    【解决方案1】:

    主要区别在于性能: http://logging.apache.org/log4j/2.x/manual/async.html#FileAppender_vs._RandomAccessFileAppender

    RandomAccessFileAppender 总是被缓冲,而 FileAppender 提供了一个配置开关(bufferedIO)。两者都有一个“immediateFlush”配置选项,以防你想确保你的消息在磁盘上(例如审计日志)。最后,RandomAccessFileAppender 的默认缓冲区大小更大:256*1024 字节 vs FileAppender 8*1024 字节(两个 appenders 缓冲区大小都可以在配置中设置)。

    还有一点,底层实现在一种情况下使用 RandomAccessFile,在另一种情况下使用 OutputStream(顾名思义)。将 RandomAccessFileAppender 与 unix logrotate 实用程序 (https://issues.apache.org/jira/browse/LOG4J2-354) 结合使用存在一个已知问题,Log4j 团队建议您使用 RollingRandomAccessFile 进行翻转并避免使用 unix logrotate 实用程序。显然 FileAppender 可以与 logrotate 结合使用——我们还没有听说过任何问题。 (由于问题已经提到了两个附加程序的 Rolling... 变体,你已经在做正确的事情,我只是想我应该提一下。)

    【讨论】:

    • 所以,实际上区别在于 RandomAccessFile 与 OutputStream,以及默认情况下的缓冲区大小?
    猜你喜欢
    • 2014-06-17
    • 1970-01-01
    • 2014-09-12
    • 2017-02-16
    • 2021-07-16
    • 2020-03-18
    • 2011-05-04
    • 2013-08-24
    • 2012-10-03
    相关资源
    最近更新 更多