앞으로 로그를 사용하게 될텐데 이에 대해서 간단히 알아보자.
평소에 사용하던 System.out.println()과 같은 시스템 콘솔을 이용한 출력을 사용하지 않고, 로그 라이브러리를 이용해서 로깅을 하는 것이 좋다.
SLF4J
slf4j는 로그 인터페이스로써 주로 사용되는 것은 logback 같은 구현체이다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LogTestController {
private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
public String logTest() {
String name = "Spring";
System.out.println("name = " + name);
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";
}
}
@RequestController
이번 코드에서는 @Controller가 아닌 @RestController를 이용하였다.
@RestController는 return 값으로 뷰를 찾는 것이 아니라 HTTP 메시지 바디에 바로 입력하게된다.
우리가 알던 REST API와 같은 느낌이다.
name = Spring
2022-04-13 22:54:18.872 TRACE 24472 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController : trace log = Spring
2022-04-13 22:54:18.873 DEBUG 24472 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController : debug log = Spring
2022-04-13 22:54:18.873 INFO 24472 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController : info log = Spring
2022-04-13 22:54:18.873 WARN 24472 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController : warn log = Spring
2022-04-13 22:54:18.873 ERROR 24472 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController : error log = Spring
로그 선언
private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(~~~.class);
로그 레벨
로그 출력 레벨 설정
logging.level.hello.springmvc=trace
logging.level.hello.springmvc=debug
logging.level.root=info
이렇게 로그 라이브러리를 사용하면
System.out
보다 좋다.