Spring Boot - Logging

이정수·2025년 10월 18일

Spring Boot

목록 보기
6/25
  • Log Level 설정
    logging.level.SourceRoot상package경로 = loglevel
    SourceRoot 기준 package상에 존재하는 모든 Class를 Application 실행 시 해당 log level( info, debug 등 )로서 console에 logging하도록 설정.
logging.level.com.wjdtn747.rest.webservices.practice2 = debug

com.wjdtn747.rest.webservices.practice2의 package상의 모든 Class를 debug log level으로 console에 logging.

특정경로의 package를 debug log level에서 logging하기.
src/main/resource/application.properties에 진입 한 후 다음 구문을 입력.

logging.level.org.springframework=debug


▶ Application을 실행 할 경우 기존 default log level을 info에서 debug로 변경하면서 더 많은 log 내용이 더 많이 표기됨.



  • CONDITIONS EVALUATION REPORT :
    Log를 자세하게 확인 시 존재하는 구문.
    Positive matches : Auto-Configuration이 된 항목
    Negative matches : Auto-Configuration이 되지 않은 항목

    Postive matches의 예시

    • DispatcherServletAutoConfiguration class
      Maven Dependency의 spring-boot-autoconfigure-3.2.5.jar 내 web - servlet 경로에 존재하며 , 해당 Class 내에서 AutoConfiguration의 사용이 설정되는 시점에 관한 설정을 확인
    @ConditionalOnClass(ServletRequest.class)
    @ConditionalOnWebApplication(type = Type.SERVLET)

    。위 구문을 통해 해당 Class는 Web application 또는 REST API를 위해 사용설정이 됨과 동시에 class path에 DispatcherServlet이라는 기능이 존재 시 Auto Configuration되는것을 확인이 가능
    ▶ 해당 기능은 이미 spring-boot-starter-web starter에서 포함하므로, 따로 설정하지 않아도 Auto-Configuration이 이루어집니다.

    • ErrorMvcAutoConfiguration class
      。default error page를 설정
      。Spring boot는 자동으로 default error page를 ErrorMvcAutoConfiguration class를 통해 설정.

      ▶ application의 URL이 mapping 되지 않음을 파악하여 적절한 오류 메세지를 사용자에게 지시.

    • 정리 : class path에 존재하는 framework에 따라 auto-configuration이 자동 생성됨.
      spring-boot-starter-web이 class path에 존재한다면 해당 framework의 모든 기능들이 auto-configuration.


  • Logger객체를 이용하여 Log 내역 표현
    SLF4j : Spring Boot가 사용하는 logging framework
    LoggerFactory.getLogger(getClass()); : logger 객체 생성.

    logger객체.로깅수준("log message", 값);:
    ex : logger.debug("Request param is : {}",name);
    。무조건 console에 도출되는 system.out.println(값)를 대신하여 원하는 log level에서 변수를 포함한 log message를 지시.

    。package의 log levelinfo으로 설정이 된 경우 logger객체.debug()은 지시되지않는다.
    logger객체.info() 이하의 log level의 log message만 console에 지시.

    logging.level.org.springframework=info : package를 info log level로 설정.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class LoginController {
    private Logger logger = LoggerFactory.getLogger(getClass());
    @RequestMapping("login")
    public String gotoLoginPage(@RequestParam String name, ModelMap model){
        model.put("name",name);
        logger.debug("Request param debug : {}",name);
        logger.info("Request param info : {}",name);
        logger.warn("Request param warn : {}",name);
        return "login";
    }
}


。다음처럼 package의 logging level이 info로 설정된 경우, logger.debug("Request param debug : {}",name);를 통한 상위 레벨 debug의 log message는 표현되지 않음.
▶ package 별로 원하는 log level의 log message로 지시할 수 있다.

profile
공부기록 블로그

0개의 댓글