로그란? 발생되는 모든 행위와 이벤트 정보를 시간에 따라 남겨둔 데이터로 로그를 통해 애플리케이션의 상태를 관찰할 수도 있고, 오류가 발생한 부분에 대해서 인지할 수 있다.
Spring Boot 로그 관리하기
system.out.println()를 사용하게 되면 io리소스를 많이 잡아먹어 속도가 느려지고, 후에 로그를 파일로 남겨서 확인해야 하기 때문에 자바에서 지원하는 logging 라이브러리를 사용해 로그를 관리한다.
로깅 라이브러리 구현체
- log4j : Apache 재단에서 개발하여 2015년을 끝으로 개발 중단하였고, 기존에 표준으로 가장 많이 사용되던 라이브러리리다.
- logback : 기존의 log4j 이후 같은 개발자가 개발하여 보다 향상된 성능을 가지고, Slf4j의 구현체로 Spring Boot에서는 spring-boot-starter-logging 안에 기본적으로 포함되어 있어서 따로 dependency를 추가하지 않고 사용 가능하다.
Slf4j, Simple Logging Facade for Java : 로깅을 간단하게 사용할 수 있도록 하는 Facade로 로깅 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법이다. 위에 나온 구현체의 종류와 상관없이 로깅을 사용할 수 있다.
로거 적용법
private Logger logger = LoggerFactory.getLogger(BoardController.class);
- lombok의 @Slf4j 어노테이션 사용, 자동으로 설정된 log 객체를 사용
log.info("########### Create BoardController ###############");
로그 레벨 : TRACE < DEBUG < INFO < WARN < ERROR
- 로그 레벨에 따라 로그 메시지의 종류가 달라진다.
- 레벨은 출력 범위를 나타내고, 현재 레벨 이상의 로그만 화면에 출력된다.
INFO 레벨이면 이상의 로그(INFO, WARN, ERROR)만 화면에 출력
- TRACE : 추적 레벨은 DEBUG보다 좀 더 상세한 정보를 표시
- DEBUG : 디버깅하기 위한 정보를 표시, 운영 서버에서는 표시하지 않도록 설정
- INFO : 상태 변경과 같은 정보성 로그를 표시
- WARN : 처리 가능한 문제, 시스템 에러의 원인이 될 수 있는 경고성 메시지를 표시
- ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시
출처 : https://primetime.tistory.com/entry/Spring-Boot-%EB%A1%9C%EA%B7%B8-%EA%B4%80%EB%A6%AC-logback%EA%B3%BC-Slf4j