2015-01-08 1 views
4

현재 구현에서 하나의 서버에는 log4j2가 RollingRandomAccessFile 용으로 설정되고 다른 RollingFile에는 설정되어 있습니다. 가능하다면 각각의 장단점과 장단점의 차이점을 알고 싶습니다. FileAppender는 설정 스위치 (bufferedIO)을 제공하면서, http://logging.apache.org/log4j/2.x/manual/async.html#FileAppender_vs._RandomAccessFileAppenderlog4j2 구성에서 RollingFile과 RollingRandomAccessFile의 차이점

RandomAccessFileAppender 항상 버퍼링 :

감사

답변

5

주요 차이점은 성능이다. 메시지가 디스크에 있는지 (예 : 감사 로깅) 확인할 것인지를 대비하여 두 가지 모두 "immediateFlush"구성 옵션을 갖습니다. 마지막으로 RandomAccessFileAppender의 기본 버퍼 크기는 더 큽니다. FileAppender의 경우 256 * 1024 바이트 vs 8 * 1024 바이트입니다 (두 개의 버퍼 크기는 구성에서 설정할 수 있음).

한 가지 더, 기본 구현에서는 한 사례에서는 RandomAccessFile을 사용하고 다른 사례에서는 OutputStream을 사용합니다 (이름에서 알 수 있듯이). RandomAccessFileAppender와 unix logrotate 유틸리티 (https://issues.apache.org/jira/browse/LOG4J2-354)를 결합하는 데 알려진 문제가 있으며 Log4j 팀에서는 롤오버에 RollingRandomAccessFile을 사용하고 unix logrotate 유틸리티를 사용하지 않는 것이 좋습니다. 분명히 FileAppender는 logrotate와 결합 될 수 있습니다 - 우리는 어떤 이슈도 들어 보지 못했습니다. (질문에서 이미 두 appenders에 대한 Rolling ... 변형을 언급 했으므로 이미 옳은 일을하고 있습니다. 그냥 언급해야한다고 생각했습니다.)