728x90
반응형
출처: https://dear-by-dear.tistory.com/m/69
로깅 라이브러링
- 스브링 부트 라이브러리를 사용하면 **스프링 부트 로깅 라이브러리(spring-boot-starter-logging)**가 함께 포함되고,
이는 기본적으로 SLF4J와 Logback를 사용한다. 지금 보니까 log4j 포함되어 있다
- 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다
쉽게 이야기해서 SLF4J는 인터페이스, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다
(실무에서는 Logback 많이 쓴다함)
package hello.springmvc.basic;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j//롬복@RestController
public class LogTestController {
//로그선언// private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
private String logTest(){
String name="Spring";
System.out.println("name : " + name);
log.trace(" trace log ={}", name);
log.debug(" debug log ={}", name);
log.info(" info log ={}", name);
log.warn(" warn log ={}", name);
log.error(" error log ={}", name);
return "ok";
}
}
- @RestController :
@Controller는 반환 값이 String이면 뷰 이름으로 인식되어 뷰를 찾고 뷰가 랜더링 된다
@RestController는 반호나 값으로 뷰를 찾는 것이 아니라 HTTP바디에 바로 입력함 -> 따라서 실행결과로 'ok' 값을 받을 수 있음
- @Slf4j : 롬복 사용이 가능하다. 이를 쓰면 로그 선언을 따로 안해줘도 된다.
로그출력 포맷 : 날짜, 시간, 로그레벨, 프로세스ID, 쓰레드명, 클래스명, 로그메세지
LEVEL : TRACE > DEBUG > INFO > WARN > ERROR
- 기본은 INFO로 설정되어 있어 TRACE와 DEBUG는 출력 X, TRACE와 DEBUG도 보고싶다면 application.properties에서 레벨 설정을 해서 출력되는 로그를 조절할 수 있다
application.properties
#전체 로그 레벨 설정(기본 info)logging.level.root=info
#hello.springmvc 패키지와 그 하위 로그 레벨 설정logging.level.hello.springmvc=debug
보통 개발 서버는 DEBUG , 운영은 INFO로 설정
log.trace(" info trace "+ name);
- 로그 사용 시, 이렇게 연산자를 쓰면 안되는 이유
trace는 따로 설정한게 아니라면 출력도 안될건데 '+'연산이 실행되며, 그로인해 메모리와 cpu가 사용된다
즉, 쓸모없는 리소스를 사용해버리게 되는 꼴
728x90
반응형
'Backend > SpringBoot' 카테고리의 다른 글
Spring RestAPI 사용 및 DAO 만들기 (0) | 2023.01.30 |
---|---|
하이버네이트란? (0) | 2023.01.29 |
롬복(lombok) 라이브러리 (1) | 2023.01.29 |
왜 java가 아니고 jakarta로 이름이 바뀌었나? (1) | 2023.01.29 |
Spring과 Spring Boot 차이 (0) | 2023.01.29 |