◆ 로깅(Logging)
- 로깅(Logging)은 로그를 생성하고 기록하는 과정을 말한다.
- 로그(Log)는 시스템이나 애플리케이션의 실행 과정에서 발생하는 이벤트나 메시지를 기록한 파일이나 데이터를 말한다.
- 주로 문제 발생 시 원인을 파악하거나 성능 최적화, 보안 감사 등의 목적으로 사용된다.
◆ Logging 도구 종류
- System.out.println()
- java.util.logging 패키지
- 상용 라이브러리
- Log4J - 과거부터 많이 사용하던 로깅 라이브러리. 2021년 치명적인 보안 이슈 발생(스프링 레거시)
- Logback - 사용량이 점점 늘어나는 신규 로깅 라이브러리(스프링 부트)
◆ Logging 의 구성 원리
로그를 총 6단계로 구분하여 작성하는 것이 원칙
- FATAL : 시스템이 다운되는 치명적인 상황(직접 작성 불가)
- ERROR : 기능이 정지되는 상황
- WARN : 기능은 작동하지만 우려가 발생하는 상황
- INFO : 기능이 실행된 정보를 알려주는 상황
- DEBUG : 개발자를 위한 상세 정보를 알려주는 상황
- TRACE : 시스템의 모든 상태를 추적하기 위한 메세지(직접 작성 불가)
◆ Logging의 목적
1) 디버깅 : 프로그램 개발 중 발생하는 오류를 찾고 수정하기 위해 로그를 사용할 수 있습니다.
2) 성능 분석 : 시스템의 성능을 분석하고 최적화하기 위해 로그를 통해 발생하는 이벤트와 메시지를 확인합니다.
3) 보안 감사 : 시스템의 보안 상태를 확인하고 취약점을 파악하기 위해 로그를 사용합니다.
4) 문제 해결 : 시스템이나 애플리케이션에서 발생하는 문제의 원인을 찾기 위해 로그를 분석합니다.
5) 이력 관리 : 시스템이나 애플리케이션의 변경사항이나 이벤트를 추적하기 위해 로그를 사용합니다.
◆ Spring에서 Logging 라이브러리를 대하는 자세
-
스프링은 기술을 자체 제작하지 않는다.
-
외부에 존재하는 기술을 연결시켜서 사용한다.
-
@Slf4j는 Lombok 라이브러리에서 제공하는 어노테이션으로, SLF4J(Simple Logging Facade for Java)를 이용하여 로깅을 쉽게 사용할 수 있게 해줍니다.
-
SLF4J를 사용하면, 로깅 프레임워크를 변경하더라도 코드를 수정할 필요 없이 의존성만 변경해주면 됩니다. 이렇게 하면 로깅 코드의 유연성이 증가하고, 다양한 로깅 프레임워크를 쉽게 교체할 수 있습니다.