SpringMVC - 07. 로깅
로깅
- 컴퓨팅에서 로그파일(logfile)은 운영 체제나 다른 소프트웨어가 실행 중에 발생하는 이벤트나 각기 다른 사용자의 통신 소프트웨어 간의 메시지를 기록한 파일이다. 로그를 기록하는 행위는 로깅(logging)이라고 한다.
- 위키 피디아 참고
- 사용시 장점
- 쓰레드 정보, 클래스 이름과 같은 부가 정보를 함께 볼 수 있음
- 출력 모양 조정 가능
- 로그 레벨에 따라, 개발 서버와 운영 서버를 별도로 관리 가능
- 파일, 네트워크 등 로그를 별도의 위치에 남길 수 있음
- 파일로 남길 시, 일별, 특정 용량에 따라 로그 분할 가능
- 성능도 System.out보다 더 좋음
로깅 라이브러리
- 스프링 부트 라이브러리를 사용하면 기본적으로 다음 로깅 라이브러리를 제공
- SLF4J (인터페이스)
- Logback (구현체)
- 대부분 Logback 사용
@Slf4j
@RestController
public class LogTestController {
// lombok이 대신 해줌 // LogTestController.class
// private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
public String logTest() {
String name = "Spring";
// 로그 레벨 => 아래로 갈수록 중요
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";
}
}
-
lombok의 @Slf4j Annotation으로 LoggerFactory한방에 해결 가능
-
로그 레벨 : TRACE > DEBUG > INFO > WARN > ERROR
-
application.properties에서 로그 레벨 설정 가능
-
# 전체 로그 레벨 설정 (default: info) # logging.level.root=info #hello.springmvc 패키지와 그 하위 로그 레벨 설정 logging.level.hello.springmvc=trace
- 개발 서버 = DEBUG, 운영 서버 = INFO로 설정하고 많이 사용
-
-
중요!!! 로그를 출력할 때 + 연산을 사용하면 안 됨
-
log.trace("trace log = {}", name); // O log.trace("trace log = " + name); // X
-
만약 로그 레벨이 info라면, 위의 로그는 찍히지 않는다.
-
하지만 + 연산을 사용하는 경우, 로그가 찍히지 않는 건 변함이 없는데 연산 자체는 동작한다.
- 즉, 의미도 없는 연산이 발생하므로 좋지 않다.
-
댓글남기기