참새의 이야기
[MVC1] Slf4j를 사용한 logging 본문
Slf4j를 사용한 logging
당근마켓 프로젝트를 할 때는 내가 구현한 내용이 나의 의도대로 실행되는지 확인하기 위해 콘솔에 System.out.println()으로 하나하나 출력했다.
실무에서는 이런 출력보다는 로그를 활용하기 때문에 간단한 사용법을 알아보려고 한다.
로깅 라이브러리
LogBack, Log4J, Log4J2와 같이 다양한 로깅 라이브러리가 존재한다.
이들을 통합한 인터페이스가 존재하는데 이것이 바로 Slf4j이다.
다시 말해, Slf4j라는 인터페이스의 구현체로 LogBack, Log4J, Log4J2 등이 존재하는 것이다.
어떤 구현체를 사용할 것인지 직접 설정해줄 수도 있지만, @Slf4j 어노테이션을 사용하면 스프링 부트는 알아서 LogBack을 구현체로 설정해 준다.
로깅 레벨
- trace
- debug
- info
- warn
- error
다섯 개의 레벨이 있다.
보통 개발 서버에서는 debug, 운영 서버에서는 info를 사용한다고 한다.
만약 로깅 레벨을 debug로 설정한다면, trace를 제외한 모든 레벨의 로그가 찍히는 것이다.
로그 레벨은 application.properties 파일에서 아래와 같이 설정할 수 있다.
#전체 로그 레벨 설정(기본 info)
logging.level.root=info
#hello.springmvc 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=debug
로그의 현명한 사용법
log.debug("data = {}", data)
log.debug("data = " + data)
위의 두 로그는 완전히 같은 정보를 찍어준다.
하지만 하나는 불필요한 연산을 유발한다.
전자의 경우 로깅 레벨이 info일 경우에는 아무 일도 발생하지 않는다.
후자의 경우에도 로깅 레벨이 info로 설정되어 있다면, 출력되는 정보는 없지만, "data = " + data가 실행되어 버린다.
쓸데없는 연산이 실행되어 버리는 것이다.
reference
이 글은 김영한님의 '스프링 MVC 1편'을 듣고 작성했습니다.
'Spring' 카테고리의 다른 글
[MVC1] 스프링 MVC Response (0) | 2023.08.04 |
---|---|
[MVC1] 스프링 MVC Request (4) | 2023.08.04 |
[MVC1] 스프링 MVC 활용 (0) | 2023.08.02 |
[MVC1] MVC 프레임워크의 구성 (0) | 2023.08.02 |
[MVC1] 웹 애플리케이션에 대한 이해 (0) | 2023.07.14 |