- 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를debuglog level으로 console에 logging.
특정경로의 package를debuglog 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의 예시
DispatcherServletAutoConfigurationclass
。MavenDependency의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-webstarter에서 포함하므로, 따로 설정하지 않아도 Auto-Configuration이 이루어집니다.
ErrorMvcAutoConfigurationclass
。default error page를 설정
。Spring boot는 자동으로 default error page를ErrorMvcAutoConfigurationclass를 통해 설정.
▶ 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 level이info으로 설정이 된 경우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로 지시할 수 있다.