ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 로깅 알아보기
    Spring 2022. 3. 5. 21:06

    운영 시스템에서는 system.out.println()과 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고,

    별도의 로깅 라이브러리를 사용해서 로그를 출력한다.

     

    스프링부트에서는 기본으로 제공하는 인터페이스 Slf4j을 구현한 logback을 대부분 사용한다.

     

    logback을 사용하는데에는 다른 방법도 있으나

    lombok의 @Slf4j을 사용하여 편히 쓸 수 있다.

     

    log는 5가지 종류가 잇다.

    trace, debug, info, warn, error

    각 종류는 error로 갈수록 공개 범위가 좁아진다고 보면된다.

     

    application.yml의 로그 범위 설정 방법이다.

     

    root는 기본적으로 info로 설정되있으며, debug로 범위를 풀면 알수없는 글들이 마구 쏟아지기 때문에 info로 두는 것 을 추천한다.

    본인 프로젝트 경로를 추가하여 본인 프로젝트 로그의 범위를 설정할 수 있으며,

    debug으로 설정하면 trace을 제외한 4가지 로그가, warn으로 설정하면 warn과 error 두가지의 로그가 저장된다고 보면 된다.

    설정범위를 info로 둔채 방금 코드를 실행하면

    log가 3개가 밖에 안나오지만

     

    범위설정을 debug로 바꾼다면

    debug도 포함되서 나오는것을 확인할 수 있다.

     

     

    로그 활용

     

    로그는 개발서버에서는 debug로 출력하는 것을 추천하며, 운영 서버에서는 info로 출력하는 것을 권장한다.

    왜냐면 로그가 리소스를 잡아먹는 것을 최소화해야하기 때문이다.

     

    log.debug()시에 String연산도 가능하지만 하지 않는 것이 좋다.

    debug("data = {}", data) 는 파라미터로 값이 넘어가 실행됬을 때 연산이 이뤄지지만

    debug("data ="+data)는 debug실행여부와 상관없이 string연산이 이뤄지기때문에 리소스를 잡아먹는다.

     

     

    로그 사용시 장점

    - 쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.

    - 로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.
    - 시스템 아웃 콘솔에만 출력하는 것이 아니라, 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다. 특히 파일로 남길 때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.
    - 성능도 일반 System.out보다 좋다. (내부 버퍼링, 멀티 쓰레드 등등) 그래서 실무에서는 꼭 로그를
    사용해야 한다.

     

     

    출처 : 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 학습 페이지 (inflearn.com)

    댓글

Designed by Tistory.