로그란 대체 뭘까?
로그는 스프링 프로젝트를 만들고 실행을 해보면 바로 볼 수가 있는데 날짜, 중요도, 발생한 위치, 내용 순으로 찍어준다.
로그는 디버깅할 때 코드 중간중간에 넣어서 확인용을 쓰이거나 요청 메세지를 찍고 싶을 때 쓴다.
System.out.println()와 한번 비교해보자.
[결과]
print문은 내용만 보여주는 반면 log는 언제 어디서 무슨 내용인지 보여준다.
만약 서버에서 Error가 나올 경우 그 Error가 언제, 어디서, 무슨 내용인지 알아야 한다. 따라서 실무에서는 log를 사용한다.
로그를 남기면 로그를 따로 뽑아서 파일 형태로 만들어서 모아 볼 수 있으며 디버깅할 때도 편리하게 쓸 수 있다.
@ Slf4j
- @ Slf4j는 다음 코드를 자동으로 생성해서 로그를 선언해준다.
private static final org.slf4j.Logger log =
org.slf4j.LoggerFactory.getLogger(RequestHeaderController.class);
로그의 레벨
1. log.trace
2. log.debug
3. log.info
4. log.warn
5. log.error
trace와 debug가 보이지 않는다.
application.properties에서
logging.level.com.sparta.demo1=TRACE
그럼 왜 Trace와 debug는 출력되지 않게 하는 걸까?
스프링은 기본적으로 로그를 Info,Warn,Error를 찍어준다. Trace와 Debug도 물론 찍을수 있지만 스프링이 기본으로 지원하는 라이브러리에 Trace와 Debug 로그가 엄청나게많다. 그러면 지정한 로그를 보려고 하면 한참 내려가야 한다.
로그의 쓰임새
- TRACE
- 가장 상세한 로그로, 주로 개발 과정에서 프로그램의 흐름을 세밀하게 파악하기 위해 사용된다.
- 특정 메소드의 진입과 종료 지점 또는 루프 내부 상태 등을 추적할 때 유용하다. 프로그램의 실행 흐름을 면밀하게 분석할 필요가 있을 때 사용한다.
- 하지만 로그가 너무 많이 쌓일 수 있으므로 개발 환경에서만 활성화하는 것이 좋다.
- DEBUG
- 디버그 용도로 제공되는 로그로 프로그램 상태나 변수 값, 특정 코드 블록이 실행되는지를 확인하는 데 사용된다.
- 주로 로직을 검증하거나 문제의 원인을 파악할 때 유용한다. 예를 들어, 조건문이나 반복문이 예상대로 작동하는지 확인할 때 사용한다.
- Trace와 마찬가지로 개발 환경에서 주로 사용한다.
- INFO
- 일반적인 정보 로그로 애플리케이션이 정상적으로 실행될 때 발생하는 주요 이벤트를 기록한다.
- 애플리케이션이 시작되었거나, 특정 중요한 작업이 성공적으로 완료된 경우를 기록할 때 유용하다.
- 예) 서버 시작 또는 종료, 특정 서비스가 성공적으로 작동했을 때 사용한다.
- 운영 환경에서도 유용한 정보를 제공하기 때문에 주로 활성화한다.
- WARN
- 경고 로그로 큰 문제는 아니지만 주의가 필요한 상황을 기록한다. 해당 사항이 곧 오류로 발전할 가능성이 있는 경우에 사용한다.
- 데이터 누락, 제한 임박, 특정 작업이 예상과 다르게 작동하는 상황을 기록한다.
- 예) 사용 가능한 메모리가 적어지는 상황을 경고하기 위해 사용될 수 있다.
- 운영 환경에서 활성화해 두는 것이 좋으며 추후 문제를 미리 파악하고 조치할 수 있다.
- ERROR
- 오류 로그로 애플리케이션이 특정 기능을 수행할 수 없을 때 발생하는 문제를 기록한다.
- 예외 처리 시점이나 중요한 작업이 실패했을 때 또는 사용자가 정상적으로 프로그램을 사용할 수 없을 경우에 사용된다.
- 예) 데이터베이스 연결 실패나 중요한 파일이 누락된 경우를 기록한다.
- 운영 환경에서 꼭 활성화하여 서비스의 문제점을 빠르게 파악할 수 있도록 한다.
'Spring' 카테고리의 다른 글
[Spring]JWT (1) | 2024.11.08 |
---|---|
[Spring] 쿠키와 세션 인증 방식 (6) | 2024.10.31 |
[Spring] Bean을 수동으로 등록하는 방법 및 BCryptPasswordEncoder (7) | 2024.10.08 |
[Spring] Spring MVC / Spring HTTP 요청 처리 방법 / Servlet / DispatcherServlet (1) | 2024.09.28 |
[Spring] Lombok / application.properties (1) | 2024.09.28 |