log4j2配置中RollingFile和RollingRandomAccessFile之间的区别是什么

时间:2015-01-08 09:34:01

标签: log4j2

在我们当前的实现中,其中一个服务器具有为RollingRandomAccessFile和另一个RollingFile设置的log4j2的配置。我想知道如果可能的话,两者之间有什么区别,各有利弊。

由于

1 个答案:

答案 0 :(得分:7)

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

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

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