개발자 미니민의 개발스터디

[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 보다 좋다. 그래서 실무에서는 꼭 로그를 사용한다.

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기