앞으로 로그를 사용하게 될텐데 이에 대해서 간단히 알아보자.
평소에 사용하던 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
- 위 출력물을 보면 System.out.println에 비하여 많은 정보를 가지고 출력해주는 것을 볼 수 있다.
- 로그 선언
- private Logger log = LoggerFactory.getLogger(getClass());
- private static final Logger log = LoggerFactory.getLogger(
~.class); - 위와 같이 로그를 선언해서 사용할 수 있다.
- log.trace()
- log.debug()
- log.info()
- log.warn()
- log.error()
- 위 중에서 원하는 레벨의 로그를 찍을 수 있다.
- 레벨의 순서는 다음과 같다.
- TRACE > DEBUG > INFO > WARN > ERROR
- 하지만 기본값으로 레벨이 INFO로 설정되어 있기 떄문에 Trace, Debug 레벨의 로그를 보기 위해서는 설정이 필요하다.
- 로그 출력 레벨 설정
- application.properties 에서 로그 레벨을 설정할 수 있다.
- 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=trace
logging.level.hello.springmvc=debug
- 전체 로그 레벨 설정
logging.level.root=info
- 전체 로그 레벨을 trace로 하면 엄청나게 많은 로그가 출력되게 되므로 주의하자.
- 이렇게 로그 라이브러리를 사용하면
- 쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 쉽게 볼 수 있다.
- 로그 레벨에 따라서 개발서버, 운영서버의 로그 출력을 조절할 수 있다.
- 보통 개발서버는 DEBUG 레벨, 운영서버는 INFO 레벨 까지 사용한다.
- 콘솔 출력에만 쓰이는 것이 아니라 별도의 설정을 통해 파일로 남길 때도 편하다.
- 성능 또한
System.out
보다 좋다.
참고 -
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1
'Spring' 카테고리의 다른 글
[SpringMVC] HTTP 요청, 응답처리 (0) | 2022.05.23 |
---|---|
[SpringMVC] 매핑 (Mapping) (0) | 2022.05.23 |
[Spring MVC] Spring MVC 패턴 (0) | 2022.05.11 |
[Spring MVC] HTML, HTTP API, CSR, SSR (0) | 2022.05.11 |
[Spring MVC] 웹 애플리케이션 (0) | 2022.04.25 |