[Spring] 스프링 부트 로깅 라이브러리

JJAM·2022년 9월 26일
0

Spring

목록 보기
1/1
post-thumbnail

해당 게시글은 인프런 - "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의를 참고하여 작성한 글 입니다.

📖 로깅 라이브러리 설명

실무에서는 System.out.println() 같은 정보를 출력하지 않고, 로깅 라이브러리를 사용해서 로그를 출력한다.

스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging) 가 함께 포함되며, 대부분 Logback 라이브러리를 사용한다.


📖 로그 사용

직접 사용해보기 위해 LogTestController 라는 컨트롤러를 생성하고

org.slf4j.Logger 패키지를 import 하여 로그를 선언한다.

// 로그 선언
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";
}

프로젝트를 실행하고 http://localhost:8080/log-test에 들어가면
아래 사진처럼 로그가 찍히는 것을 볼 수 있다.


📖 로그 출력 형식

위에 로그 결과를 보면

시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지

순의 형식으로 찍히는 것을 볼 수 있다.


📖 로그 레벨

그러나 위에 코드에서 분명 로그를 5번 호출 했는데, 실제 결과는 3개만 찍힌 것을 볼 수 있다.

왜냐하면 바로 로그 레벨 때문이다.

로그 레벨
TRACE > DEBUG > INFO > WARN > ERROR
개발 서버는 debug 출력
운영 서버는 info 출력

그래서 로그 레벨을 설정하여, 해당 패키지의 trace 레벨까지 보고 싶으면 application.properties 에서 다음과 같이 설정한다.

logging.level.hello.springmvc=trace

그러면 trace 레벨까지 log 결과를 볼 수 있게 된다.

전체 로그 레벨을 설정할 때엔 다음과 같이 작성하며, 기본적으로 info 레벨로 설정되어 있다.

logging.level.root=info

📖 로그 사용 장점

  • 쓰레드 정보, 클래스 이름 같은 부가 정보를 볼 수 있음
  • 출력 모양 조정 가능
  • 상황에 맞게 로그 레벨에 따라 로그를 출력하고, 출력하지 않을 수 있음
  • 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있음
  • 일반 System.out보다 성능이 좋음 (내부 버퍼링, 멀티 쓰레드 등등)

📖 추가 정보

스프링 부트가 제공하는 로그 기능은 아래 링크에 더 자세하게 설명되어 있다.
Logging 기능 더 알아보기...

profile
☘️

0개의 댓글