개발자의 오르막
[Log4j 1.2.16-ver Json Layout 적용기 #01] 로그 개선 방향 선정 본문
회사에서 log4j , String 형태로 출력하던 로그에서 특정 부분을 JSON 형태로 새로운 파일에 출력하기를 원하는 요구사항이 있었다.
요구사항
- 신규파일
- format : JSON
- 파일을 플랫폼에 등록하는 일련의 과정 - 진행 상태 모니터링
- 오류 발생 시 오류를 확인에 필요한 로그
프로젝트 SPEC
- JAVA 1.7
- log4j 1.2.16
결론부터 말하자면 log4j1.2.16 Version 만으로는 Json Format 지원이 어렵다.
A) log4j 라이브러리 버전을 2.x.x Version 으로 올리기
B) logstash 와 같은 다른 라이브러리를 추가하여 Json Format 을 지원하기
따라서 A안과 B안이 있는데, 현재 회사의 프로젝트는 미들웨어 App 으로 여러 서버에서 동작하고 있기 때문에, 적합한 대안을 근거를 통해 선택해야 한다.
A안 ) Log4j-1.2.16 version -> Log4j-2.12.4 version 으로 버전 업그레이드
로그 라이브러리 Version 선정 이유
- 현재 log4j 1.x.x 지원은 종료된 상태로 log4j 2.x.x 로 버전을 올리기를 권장
- log4j 2.12.4 는 log4j 의 보안취약점이 보완된 버전
- Java 7 Version 지원되는 마지막 log4j Version
- Json Format 로깅을 지원
아무래도 Json Format 을 Log4j-2.12.4 version 에서도 지원하니, 기존의 지원 종료된 라이브러리에서 탈피할 수 있는 장점이 있다.
log4j Version 1점 대에서 2점대로 이관작업이 필요함
- log4j 의 로거와 log4j2 의 로거는 호환된다.
- getLogger 가 정의한 클래스명만 다를 뿐 getLogger 로 얻어진 인스턴스로 동일하게 재사용이 가능
- PropertyConfigurator 라는 클래스는 2버전으로 없어지고, xml 파일로 설정값을 읽어들이는 것으로 변경됨
- log4j.properties log4j.properties 에서 log4j2.xml 로 마이그레이션 작업이 필요함
라이브러리 교체 소요
- 현재 log4j 1.2.16 version 에 사용되는 jar 파일
log4j-1.2.16 | slf4j-api-1.6.1.jar | slf4j-log4j12-1.6.1.jar |
jackson-databind-2.3.2.jar | jackson-core-2.3.2.jar | jackson-annotations-2.3.0.jar |
- 교체 소요 라이브러리
log4j-core.2.12.4.jar | log4j-api-2.12.4.jar | log4j-slf4j-impl-2.12.4.jar |
jackson-databind-2.12.3.jar | jackson-annotation-2.12.3.jar | jackson-core-2.12.3.jar |
B안 ) Logstash - jsonevent-layout
Logstash 의 Jsonevent-layout 이란?
Logstash 의 jsonevent-layout 은 log4j를 위한 json Layout Format 을 지원하는 라이브러리이다.
log4j 에서는 로그 레이아웃을 지원하기 위해 Appender 형식을 사용하는데, Jsonevent-layout 은 log4j 의 Appender 를 커스텀하여 지원한다.
추가 라이브러리
jsonevent-layout-1.7.jar | json-smart-2.3.jar | asm-1.0.2.jar | common-lang-2.6.jar |
2개의 안을 검토 결과, log4j 의 버전도 1.2.16 임으로, 권장사항에 따라 Java 7 에 호환되는 2.12.4 Version 으로 올리는 것으로 결정
'Java' 카테고리의 다른 글
[Log4j 1.2.16-ver Json Layout 적용기 #03] Logstash - jsonevent-layout 라이브러리 적용 (0) | 2022.07.11 |
---|---|
[Log4j 1.2.16-ver Json Layout 적용기 #02] 기존 공통 라이브러리 의존성에 따른 Log4j2 Mig 이슈 (0) | 2022.07.11 |
Java - compile (0) | 2019.08.23 |
Java - IO 예외처리 (0) | 2019.07.25 |
Java-예외처리 (0) | 2019.07.25 |
Comments