T_era
Spring Boot 로깅 및 Controller 어노테이션 요약 본문
Slf4j와 로깅
- Slf4j는 로깅 인터페이스이며, Logback 등의 구현체를 선택하여 사용한다. Spring Boot는 Logback을 기본 제공한다.
- 로깅은 Thread 정보, 클래스 이름 등의 부가 정보를 포함하며, 운영 환경에서 System.out.println() 대신 사용된다.
- 로그 레벨 설정을 통해 특정 심각도 이상의 로그만 출력하거나, 일자별로 로그를 저장 및 관리할 수 있다. 로그 레벨은 TRACE > DEBUG > INFO > WARN > ERROR 순으로 심각도가 높아진다.
- Slf4j 사용 예시:
@Slf4j
@RestController
public class Slf4jController {
@RequestMapping("/logging")
public String logging() {
String sparta = "Sparta";
log.trace("문자 trace={}", sparta);
log.debug("문자 debug={}", sparta);
log.info("문자 info={}", sparta); // 문자열 연산 지연
log.warn("문자 warn={}", sparta);
log.error("문자 error={}", sparta);
log.info("문자 info " + sparta); // 문자열 연산 수행
return "success";
}
}
- log.info("문자 info={}", sparta)의 경우 문자열 연산을 아예 안하는 것이 아닌 로그레벨이 적합할 때에만 연산을 진행한다
- application.properties에서 logging.level.패키지_이름=로그_레벨 형식으로 로그 레벨을 설정한다.
(예: logging.level.com.example.springbasicannotation=TRACE)
@Controller와 @RestController 비교
Spring에서 Controller를 정의하는 데 사용되는 어노테이션이다.
- @Controller: View 반환을 목적으로 사용되며, Thymeleaf, JSP 등의 템플릿 엔진과 함께 사용된다.
@Controller
public class ViewController {
@RequestMapping("/view")
public String example() {
// 로직 처리
return "sparta"; // View 이름 반환
}
}
* Thymeleaf 사용 시 `build.gradle`에 `spring-boot-starter-thymeleaf` 의존성을 추가해야 한다.
* Thymeleaf 템플릿 파일은 `src/main/resources/templates` 경로에 위치한다.
* `@Controller`에서 String 반환 시, `ThymeleafViewResolver`가 이를 View 이름으로 해석한다.
- @RestController: 데이터 응답을 목적으로 사용되며, Restful API 개발에 주로 활용된다. HTTP Message Body에 데이터를 직접 담아 반환하며, @ResponseBody와 관련이 있다.
@RestController
public class ResponseController {
@RequestMapping("/string")
public String example() {
// 로직 처리
return "abcdefg"; // String 데이터 반환
}
}
* `@RestController`는 View를 반환하지 않으므로 ViewResolver나 ViewModel 검색 과정을 생략한다
'Programing > Spring' 카테고리의 다른 글
| @RequestMapping 어노테이션 정리 (0) | 2025.05.06 |
|---|---|
| Spring 어노테이션 정리 (0) | 2025.05.06 |
| Spring MVC View Resolver (1) | 2025.05.05 |
| Spring MVC Controller 구현 및 동작 방식 (0) | 2025.05.05 |
| Spring MVC 구조 및 동작 방식 (0) | 2025.05.05 |