해당 게시글은 인프런 - "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의를 참고하여 작성한 글 입니다.
실무에서는 System.out.println()
같은 정보를 출력하지 않고, 로깅 라이브러리를 사용해서 로그를 출력한다.
스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging) 가 함께 포함되며, 대부분 Logback 라이브러리를 사용한다.
직접 사용해보기 위해 LogTestController
라는 컨트롤러를 생성하고
org.slf4j.Logger 패키지를 import 하여 로그를 선언한다.
// 로그 선언
private final Logger log = LoggerFactory.getLogger(getClass());
로그를 다음과 같이 호출하기 위해 코드를 작성하고 결과를 본다.
@RequestMapping("/log-test")
public String logTest() {
String name = "Spring";
log.trace("trace log = {}",name);
log.debug("debug log = {}",name);
log.info("info log = {}",name);
log.warn("warn log = {}",name);
log.error("error log = {}",name);
return "ok";
}
프로젝트를 실행하고 http://localhost:8080/log-test에 들어가면
아래 사진처럼 로그가 찍히는 것을 볼 수 있다.
위에 로그 결과를 보면
시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지
순의 형식으로 찍히는 것을 볼 수 있다.
그러나 위에 코드에서 분명 로그를 5번 호출 했는데, 실제 결과는 3개만 찍힌 것을 볼 수 있다.
왜냐하면 바로 로그 레벨 때문이다.
로그 레벨
TRACE > DEBUG > INFO > WARN > ERROR
개발 서버는 debug 출력
운영 서버는 info 출력
그래서 로그 레벨을 설정하여, 해당 패키지의 trace 레벨까지 보고 싶으면 application.properties
에서 다음과 같이 설정한다.
logging.level.hello.springmvc=trace
그러면 trace 레벨까지 log 결과를 볼 수 있게 된다.
전체 로그 레벨을 설정할 때엔 다음과 같이 작성하며, 기본적으로 info 레벨로 설정되어 있다.
logging.level.root=info
스프링 부트가 제공하는 로그 기능은 아래 링크에 더 자세하게 설명되어 있다.
Logging 기능 더 알아보기...