Http://www.aliyun.com/zixun/aggregation/14223.html "> 응용 프로그램 시스템 로그 오류 정보의 응용 프로그램 로그 파일에서 찾을 수 있어야 모든 필수적인 중요 한 부분입니다 일부 응용 프로그램 시스템 로그는 매우 작은 수 있습니다, 일부 대형 응용 프로그램 시스템 로그는 매우 큰 로그 파일 사용자 친화적인 되어야 하며 검색, 높은 성능을 그렇지 않으면 그것은 것에 영향을 미칠 응용 프로그램 시스템의 성능.
이후 로그 자주 IO 읽기 / 쓰기 디스크를 포함 (또는 차단 또는 비동기), 시간이 오래 걸릴 수 있습니다. 큰 시스템에 데이터를 많이 있는 경우 로그에서 걸리는 시간을 명백한 것입니다. 이 문서에서는, 우리 것 이다 탐구 하다 현재 자바 오픈 소스를 탐험은 세계 최고의 5 로그 프레임, 비교, 지적 하이 글의 모든 측면에서 어떤 로그 프레임 워크만을 그들의 강점과 약점을 나열 하지만 최고입니다.
5 로그 프레임 우리가 선택 했다:
1입니다. log4j
2입니다. Log4j2
3입니다. Logback
4. slf4j 간단한 로깅 (slf4j SL)
5. 자바 Util 로깅 (6 월)
각각의 타임 스탬프와 그 맥락의 프로세스 ID를 포함 하는 기본 로깅 작업에 대 한 이러한 로그 프레임 워크의 성능을 비교 합니다. 우리는 다음 4 가지 평가 실시:
1. 레코드 문자열 상수
2. 로깅은. POJO 사용. ToString () 메서드는 POJO의 ToString () 값
3. 로깅 Throwable 객체 레코드 throwable 객체 4만 테스트. ToString () 메서드
우리는 어느 날 종이 완성 되었습니다 횟수를 측정 하 여 최상의 결과 했다 결정을 5 번 각 시나리오를 평가 하기로 결정 했습니다. 각 테스트에 로그 엔진 10 스레드 1 분에 실행 되 고 나머지 세 번 평균 최대 2 편차 제거 됩니다.
우리 (임의의 숫자가 소수 인지 확인) 등의 일부 작업을 수행 하는 CPU를 하자 각 개별 로깅 작업에 로그인 할 때. 이러한 평가 대 한 로그 엔진 SLF4J에 의해 실행 됩니다 그들의 각각 기본 구성을 사용 하 여. 평가 아마존 M1.large EC2 인스턴스에서 수행 했다.
Log4j2의 첫 번째 테스트에서 우리는 %c 레이아웃 매개 변수를 설정할 (참조: http://logging.apache.org/log4j/2.x/manual/layouts.html),이에 오버 헤드 증가 REMKOPOPMA의 추천, 우리는 업데이 트 설정 %c (로그 이름) LOG4J2는 상당한 성능 향상을 제공, 다른 구성에 맞게 그리고 다음 두 그래프에 그것 기록 컨텍스트의 성능 오버 헤드를 지적 가치가 있다.
%C:에 대 한 설정 사용
%C:에 대 한 설정 사용
이 링크: https://docs.google.com/spreadsheet/ccc?key=0alceaf46x4gpdhboltdyq29nrdh6v1dry00zt1fwwwc에 테스트 결과 집합된 참조 완료 & Usp = 공유
다음은 4 시나리오에 따라 테스트 결과의 상세한 분석입니다.
문자열 상수
경쟁의이 라운드에서 로그 엔진은 스레드 및 타임 스탬프 컨텍스트 레코드 문자열 상수를 사용 합니다. LOG4J는 챔피언, 6 월 270% 저널을 작성할 수 있습니다 보다 더 많은 라인, Logback 보다는 더 많은 slf4j SL 보다 12.5%, 52%. 재미 있는 것은 우리가 log4j2의 구성을 변경 하기 전에 구성 변경 후 1/4 보다 더 많은 행을 기록, 성능 3, 30%는 Logback에 기록 하는 행의 수 위는.
2. ToString)
Pojo (사용 하는. ToString 메서드)이이 라운드에 기록 된 동일한 스레드 및 타임 스탬프에 사용 됩니다. 결과적으로, log4j2에 대 한 첫 번째 라운드와 동일 하지만 SLF4J sl에 비해 25% 성능 향상은. Log4j와 Logback, 3, 위 SLF4J sl의 88%의 처리량을 했다.
3. Throwable
이 라운드에서 경쟁의, 로그 엔진 예외 개체와 관련 된 설명 정보를 기록합니다. Log4j2 우선 순위는, 그것의 성과 slf4j SL, SL 5 곳에는 slf4j 보다 3 시간.
log4j와 Logback만 평가 될 수 있다이 라운드에서 우승 후, 행 수, 챔피언의 반 대략 서만 기록 그리고 두 번째 6 월, 약 82%의 Log4j2 로그 볼륨의 제목을 기록할 수 있다.
4. ToString () 메서드 경쟁
서버 로그를 처리 하는 경우 (예: 스레드 ID, 클래스, 타임 스탬프, 등의 관련된 컨텍스트) 각 로그 항목의 컨텍스트는 로그 콘텐츠 만큼 이나 중요. 이전 테스트에서 당신은 대부분의 로그 파일-스레드 ID 번호 및 타임 스탬프에 일반적인 플래그 사용. 다음 우리가 가치가 있다고 생각 그것의 성능을 분석 합니다. toString () 메서드는 로그에.
이 시점에서, Log4j2는 우승자 (180% 성능 향상을 얻을 구성 변경) 하는 경우, Logback 및 6 월 약 25%를 승리. SL4FJ SL 격파 되었다입니다. 라운드 당 5 테스트 slf4j SL에서는 불가능 했던 때 보다 더 나은 펜더 사용.
Log4j 처리량의 15% 증가 있다. 6 월 log4j와이 라운드에서 log4j2에 대 한 일치 이며, 결과 동일 하지 콘텐츠 데이터를 사용 하 여.
이 문서에 대 한 테스트 코드는 https://github.com/takipi/the-logging-olympics에서 다운로드할 수 있습니다.