6. 스프링 MVC - 기본 기능[프로젝트 생성 및 로깅 기능]

이건회·2022년 7월 7일
0

springmvc

목록 보기
23/29


  • 스프링 부트에 Jar 를 사용하면 /resources/static/ 위치에 index.html 파일을 두면 Welcome 페이지로 처리해준다. (스프링 부트가 지원하는 정적 컨텐츠 위치에 /index.html 이 있으면 된다.

  • 실무에서는 print문이 아닌 로깅 라이브러리를 통해 필요한 정보 로그를 출력한다.

  • 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다.

  • 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다.

  • 쉽게 이야기해서 SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다. 실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다.


  • @RestControll 어노테이션은 문자열을 반환하면 특정 ViewResolver를 거치는 등의 과정 없이 문자열이 그대로 http body에 담겨 웹에 반환된다.

  • log.info()를 통해 시간, 프로세스id, 실행 스레드, 컨트롤러 이름 등이 모두 콘솔에 출력된다.


  • info 이외에도 다양한 로그 메소드를 찍어 정보를 볼 수 있다.
  • 콘솔에는 info,warn,error 메세지만 출력되는데, 기본적으로 여러 로그가 남아있어도 레벨이 낮은 debug와 trace 정보는 운영서버가 처리하지 않도록 세팅하기 때문이다. 로그를 다 넘기면 운영서버가 힘들어진다. info,warn,error가 더 중요한 로그다.


  • 물론 application.properties에서 다음과 같은 설정을 통해 레벨을 올려 debug나 trace 정보가 출력되도록 할 수도 있다.

* @RestController

  • @Controller 는 반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다.
  • @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. 따라서 실행 결과로 ok 메세지를 받을 수 있다.

  • 기본 로그 레벨은 info로 설정하고 원하는 정보가 있을 때만 debug나 trace를 찍어보면 된다.

  • @Slf4j 어노테이션을 사용하면 기존처럼 로그 선언(private final Logger log = LoggerFactory.getLogger(getClass());) 없이도 lof.info()등 로그 출력 정보를 설정할 수 있다.

  • 중요한 내용인데 절대 로그 메세지를 찍을 때 "+"를 사용하지 않는다. 이 경우 자바에서 연산이 들어가기 때문에 쓸모 없는 메모리를 낭비할 수 있다 의미 없는 연산이 일어나는 것이다.. 그러나 "," 를 사용하면 파라미터로 넘기기만 하므로 연산이 들어가지 않는다.

  • 필요한 로그를 상황에 맞게 조절하는 것이 핵심이다.

profile
하마드

0개의 댓글