목차
728x90
로깅
로깅의 장점
- 스레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.
- 로그 레벨을 설정하여 상황에 맞게 조절해 사용할 수 있다.
- 콘솔에만 출력하는 것이 아닌, 파일/네트워크 등 별도의 위치에 남길 수 있다.
(파일에 남기는 경우, 일별 / 특정 용량에 따라 로그를 분할하는 것도 가능)
- 성능도 System.out
보다 좋다. (내부 버퍼링, 멀티 스레드 등)
SLF4J
: 로그 라이브러리들을 통합한 인터페이스
LogBack
: SLF4J
를 구현한 구현체 중 한 로그 라이브러리
로그 선언
private Logger log = LoggerFactory.getLogger(getClass());
> @Slf4j
를 클래스에 추가하면, 로그 선언 없이 바로 log 를 사용할 수 있다.
로그 호출
log.info("hello");
로그 사용
// @Slf4j
@RestController
public class LogTestController {
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";
}
}
로그 출력 포멧
시간 | 로그 레벨 | 프로세스 ID | 스레드 명 | 클래스명 | 로그 메시지
로그 레벨
- TRACE
> DEBUG
> INFO
> WARN
> ERROR
- debug
: 개발 서버, info
: 운영 서버
로그 레벨 설정
- 기본값은 info
logging.level.hello.springmvc=debug
올바른 사용법
만약 로그 출력 레벨이 info 인 경우,
log.debug("data={}", data)
는 아무 일도 발생하지 않지만,
log.debug("data=" + data)
는 컴파일 시점에 문자열 연산이 발생하여 의미 없는 연산이 발생한다.
출처 | 스프링 MVC 1(김영한) - 인프런
728x90
'💠프로그래밍 언어 > Java' 카테고리의 다른 글
[Thymeleaf] 타임리프 사용 방법 완전 정복! (0) | 2025.03.20 |
---|---|
[Spring] SpringMVC 의 요청 매핑과 요청/응답 메시지 기능 ! (0) | 2025.03.20 |
[Spring] SpringMVC 의 세부적인 구조 (핸들러, 핸들러 어댑터, 메시지 컨버터) (1) | 2025.03.19 |
[Spring] 리팩토링하며 점진적으로 Spring MVC 프레임워크 만들기 !! (0) | 2025.03.14 |
[Spring] MVC 패턴이 등장하게 된 이유 !! (feat. 서블릿, JSP) (1) | 2025.03.14 |