[CS-WEB] 로깅 레벨 & 로깅 프레임워크

지영·2023년 8월 29일
0

CS

목록 보기
65/77
post-custom-banner

Logging Level이란,

  • 상황에 따라 필요한 로그를 보여주기 위해서 로그 정의시 사용하는 level을 구분한다.
  • Logging level을 정의함으로써 얼마나 해당 정보가 중요한지를 나타낸다.
  • 총 8단계를 구성되며, ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 순(*오른쪽으로 갈 수록 치명적)으로 구성되며, ALL과 OFF는 대부분 쓰지 않고 6단계를 사용하고 있다.
  • Java에서는 보통 Log4j라는 라이브러리를 활용한다.

1. FATAL

응용 프로그램의 중요한 비즈니스 기능 중 하나가 더 이상 작동하지 않는 상태에 진입했을 때 혹은 전체 프로그램이 비즈니스 기능을 수행하지 않을 때 알려주는 로그 수준이다. 데이터베이스와 같은 중요한 저장소에 연결할 수 없는 경우 이에 해당된다.

2. ERROR

응용 프로그램이 하나 이상의 기능이 제대로 작동하지 않아, 일부 기능이 올바르지 않게 작동하지 않을 때 사용한다.
EX) DB를 사용할 수 없는 상태, 중요 에러가 나오는 상황

3. WARN

예기치 않은 일이 발생했음을 나타내는 로그 레벨이지만, 응용 프로그램이 실패했다는 것을 의미하지는 않는다. 예기치 않은 상황에서 사용하지만 기능은 예상대로 작동할 때(에러가 날 수 있는 잠재적 가능성이 있는 경우)이다.
하지만 WARN에서도 서비스 종료가 나타날 수 있다. 아래의 경우가 예시이다.

- 명확한 문제 : 현재 데이터를 사용 불가, 캐시값 사용 등
- 잠재적 문제 : 개발 모드로 프로그램 시작, 관리자 콘솔 비밀번호가 보호되지 않고 접속 등

4. INFO

문제가 발생했음을 나타내는 표준 로그 레벨이다. 정보성 로그이며, 요구사하엥 따라 시스템 동작을 보여줄 때 사용한다. 서비스 시작이나 중지 등이 이에 해당한다.

5. DEBUG

개발자가 기록할 가치가 있는 정보를 남기기 위해 사용하는 레벨. 문제 진단 및 문제 해결을 할 때 도움이 되는 정보이다. 이 외에도 모든 것이 올바르게 실행되고 있는지 확인하기 위해 테스트 환경에서 프로그램을 실행할 때 사용된다.

6. TRACE

코드를 추적하고 기능의 부분을 찾을 때 사용하는 정보이다. Dev 환경에서 버그를 해결하기위해 사용하며, 최종 프로덕션이나 커밋에 포함되면 안된다고 한다.

로깅 프레임워크, Slf4j

Slf4j

  • Simple Logging Facade for Java라는 이름으로 java.util.logging, logbacklog4j와 같은 로깅 프레임워크에 대한 인터페이스 역할을 하는 라이브러리이다.
  • 인터페이스이기 때문에 단독으로는 사용이 불가능하다.
  • 최종 사용자가 배포시, 원하는 구현체(logbakc, log4j ..)을 선택하여 사용이 가능하다.

✔ 동작과정


1. 개발 시, slf4j API를 사용하여 로깅 코드를 작성한다.
2. 배포 시, 바인딩 된 구현체가 실제 로깅 코드를 수행한다.

Logback

logback은 로깅 프레임워크 중 하나로, slf4j의 구현체 라이브러리이다.

  • Log4j를 토대로 만든 프레임워크
  • 현재 Spring Framework에서 기본라이브러이로 slf4j, logback을 채택하고 있다.

✔ 구성 모듈

  • logback-core

    • logback-classic, logback-access 두 모듈의 기반 역할을 담당하며 appender, layout 인터페이스가 이 모듈에 속해 있다.
  • logback-classic

    • logback-core를 가지며 slf4j API 를 구현한다.
    • log4j 또는 java.util.logging(JUL)과 같은 다른 로깅 프레임워크 간에 쉽게 전환 가능하다.
    • Logger 클래스가 이 모듈에 속해 있습니다.
  • logback-access
    *Servlet Container 와 통합되어 Tomcat 및 jetty 등 Servket 컨테이너에 HTTP Access 로그 기능을 제공합니다.

    • 웹 어플리케이션 레벨이 아닌 컨테이너 레벨에서 설치되어야 합니다.



* 참고 : https://sdardew-valley.tistory.com/141, https://thalals.tistory.com/373, https://gyoogle.dev/blog/web-knowledge/Logging%20Level.html
profile
꾸준함의 힘을 아는 개발자📍
post-custom-banner

0개의 댓글