반응형
로깅 (Logging)
- 시스템의 작동 정보인 로그(Log)를 기록하는 것
- 시스템이 작동할 때 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중 각종 정보를 기록하는 것
- 일반적인 출력인 System.out.println()은 동기이기 때문에 로그를 출력하는 동안 다음 동작을 할 수 없기 때문에 성능저하가 발생한다.
Slf4j (Simple Log Facade For Java)
- 로깅 프레임워크가 아님.
- 다양한 로깅 프레임워크가 접근할 수 있도록 하는 추상화 계층(인터페이스)
- 단독적으로 사용할 수 없다.
- 브리지를 통해 자바의 다양한 로깅 프레임워크를 간편하게 사용할 수 있다.
- 로그 종류
- Fatal : 아주 심각한 에러
- Error : 요청을 처리하던 중 문제가 발생한 상태
- Warn : 처리에는 문제가 없지만, 향후 에러의 원인이 될 수 있는 경고
- Info : 상태 변경 혹은 정보성 메시지
- Debug : 개발 시 디버그 용도로 사용
- Trace : 디버그 레벨이 너무 광범위하여 좀 더 상세한 이벤트를 나타냄
Log4j
- Apache의 오래된 로깅 프레임워크
- 2015년 개발 중단
- 속도에 최적화가 되어있다
- 멀티 스레드 환경에서도 안전
- 로그의 출력 형식을 쉽게 변경할 수 있다.
Logback
- Log4j와 유사하지만 보더 향상된 성능, 추가 기능 제공
- 특정 사용자(특정 조건)에서의 로그레벨을 변경가능 (필터 정책)
- 자동 리로드 (log4j는 log Level 변경 시 서버를 재가동해야 하지만 logback은 logback.xml을 서버 재가동할 필요 없이 바로 리로드)
- sifitingAppender에서 여러 가지 런타임 설정에 따라 로깅을 분리, 선별할 수 있다. 예를 들어, 사용자 세션에 따라 각각 개인의 로그 파일을 생성
- spring boot 기본 dependency
Log4j2
- Logback과 동일하게 자동 리로드 기능과 필터링 기능 추가
- 비동기 로거 도입, 멀티 스레드 환경에서 보다 높은 처리량
- 사용자 정의 로그레벨 지원
- 람다 표현식 지원
- 메시지 템플릿 기능
- filter를 이용한 logging 이벤트 필터링 가능
- 대부분의 Appender에 Layout 사용이 가능해 출력 포맷에 높은 자유도
- Layout이 항상 byte array를 반환해 어떤 appender와도 호환이 가능
- Syslog Appender가 TCP, UDP 및 BSD Syslog를 지원
- 동기화 이슈 해결
반응형
'Language > Java' 카테고리의 다른 글
enum 클래스 활용하기 (0) | 2023.09.06 |
---|---|
Java 로깅 알아보기 2 - logback (0) | 2023.08.04 |
Bean, VO, DTO, Entity 구분하기 (0) | 2023.07.26 |
Gradle을 이용한 순수 자바 Jar 만들기 (0) | 2023.06.20 |
MacOS에서 JDK (Java Developer Kit) 설치하기 (0) | 2023.06.13 |