[Spring MVC] 스프링 부트 로깅 (logging) 설정
by mini_min로깅
💡 운영 시스템에서는 별도의 로깅 라이브러리를 사용해서 로그를 출력한다.
로깅 라이브러리
스프링 부트 라이브러리를 사용하면, spring-boot-starter-logging 이 자동으로 포함되고, 스프링 부트 로깅 라이브러리는 기본적으로 2가지 로깅 라이브러리를 사용한다.
- SLF4J
- Logback
Logback, Log4J, Log4J2 등 다양한 로그 라이브러리를 통합해서 인터페이스로 제공하는 것이 SLF4J이다.
로그 선언 @Slf4j : 롬복 사용 가능
private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class);
💡 실무에서는 항상 로그를 사용해야 한다.
로그 테스트 포맷
- 시간, 로그 레벨, 프로세스 ID, 쓰레드명, 클래스명, 로그 메시지
로그 레벨
- TRACE > DEBUG > INFO > WARN > ERROR
로그 레벨 설정
logging.level.root=info (기본 info)
#hello.springmvc 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=debug
올바른 로그 사용
//틀린 예
log.trace("trace log=" + name);
//옳은 예
log.trace("trace log={}" , name);
첫번째 방식은 자바에서 문자열 더하기 연산이 먼저 일어나기 때문에 불필요한 연산을 만드는 꼴이 될 수 있다.
두번째 방식은 SLF4J 치환 문자를 사용하는 방식으로, 로그 레벨을 확인 후 중괄호에 출력하고자 하는 문자를 넣기 때문에 불필요한 연산이 발생하지 않도록 한다.
로그 사용의 장점
- 스레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.
- 로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고, 운영 서버에서는 출력하지 않는 등 상황에 맞게 조절할 수 있다.
- 파일이나 네크워크 등, 로그를 별도의 위치에 남길 수 있다.
- 성능도 시스템 print 보다 좋다. 그래서 실무에서는 꼭 로그를 사용한다.
'Spring' 카테고리의 다른 글
[스프링 MVC 2편] 메시지, 국제화 핵심 정리 (1) | 2023.12.06 |
---|---|
[스프링 MVC 1편] MVC - 구조의 이해 (0) | 2023.07.01 |
[스프링 MVC 1편] MVC 프레임워크 만들기 (3) - 어댑터 패턴 (0) | 2023.07.01 |
[스프링 MVC 1편] MVC 프레임워크 만들기 (2) (0) | 2023.07.01 |
[스프링 MVC 1편] MVC 프레임워크 만들기 (1) (0) | 2023.06.27 |
블로그의 정보
개발자 미니민의 개발로그
mini_min