T_era

Spring Boot 로깅 및 Controller 어노테이션 요약 본문

Programing/Spring

Spring Boot 로깅 및 Controller 어노테이션 요약

블스뜸 2025. 5. 6. 15:17

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