본문 바로가기
자바(Java)

Java 로깅 알아보기 1 - Logging이란

by codeyaki 2023. 8. 4.
반응형

로깅 (Logging)

  • 시스템의 작동 정보인 로그(Log)를 기록하는 것
  • 시스템이 작동할 때 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중 각종 정보를 기록하는 것
  • 일반적인 출력인 System.out.println()은 동기이기 때문에 로그를 출력하는 동안 다음 동작을 할 수 없기 때문에 성능저하가 발생한다.

Slf4j (Simple Java 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를 지원
  • 동기화 이슈 해결
반응형