
@RestController vs @Controller@Controller: String일 때, 뷰 이름으로 인식합니다. @RestController: @ResponseBody와 관련이 있습니다.Spring에서 로그를 출력할 때 일반적으로 다음과 같은 포맷을 사용한다.
시간 | 로그 레벨 | 프로세스 ID | 쓰레드 명 | 클래스 명 | 로그 메시지
로그 레벨에는 다음과 같은 단계로 나뉘어있는데,
TRACE DEBUG INFO WARN ERROR DEBUG 레벨까지 출력합니다. INFO 레벨부터 출력합니다.@Slf4jSpring에서 로그를 쉽게 사용할 수 있게 도와주는 어노테이션으로는 @Slf4j가 있는데, 예시는 아래와 같이 볼 수 있다.
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MyController {
public void logExample() {
log.info("This is an info log");
}
}
다음과 같이 로그를 선언할경우 나오는 출력으로는
2024-06-13 12:45:33 INFO 12345 — [main] com.example.MyClass: This is an info log.
이렇게 로그의 시간, 타입, 클래스명, 로그내용등을 볼 수 있다.
일반 문자열인 경우 위와 같이 텍스트를 작성하면 되지만, 데이터를 받아서 쓰고싶은 경우가 있을텐데
String name = "로그내용 확인해보기"
log.trace("trace logs = " + name);
다음과 같이 로그를 출력하게될 경우 실제 로그까지 넘어가지 않더라도 이미 연산이 진행되었기때문에 서버의 리소스를 사용하게되는데, 이를 해결하는 방법이 있다.
String name = "로그내용 확인해보기"
log.trace("trace logs = {}", name);
다음과 같이 로그를 작성할 경우 해당 로그가 출력이 될때만 변수값을 가져와서 연산을 진행하기때문에 리소스를 절약 할 수 있다.