ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로깅
    Spring/MVC1-스프링MVC 기본기능편 2023. 6. 14. 10:27
    728x90

    개념

    보통 어플리케이션을 개발하면서 다양한 로그를 남기는데, 우리가 흔히 알고 있는 System.out.println()의 경우,

    필요하지 않는 경우네도 정보를 출력하게 된다. 이는 대용량 서비스시에 서버의 장애를 낳을 수 있는 요인이 될 수 있다.

    하지만 서버를 가동하면서 필요한 정보를 남기는 logging은 반드시 필요하기 때문에, 각각의 개발환경에 맞는 log 레벨을 지정해주고 이를 관리할 필요가 있다.

     

     

     

    스프링 부트의 로깅 라이브러리

    스프링부트는 다음의 로깅 라이브러리를 기본으로 제공한다.

     

    SLF4J

    Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framewor

    www.slf4j.org

     

    Logback Home

    Logback Project Logback is intended as a successor to the popular log4j project, picking up where log4j 1.x leaves off. Logback's architecture is quite generic so as to apply under different circumstances. At present time, logback is divided into three mod

    logback.qos.ch

    로그라이브러리는 Logback, Log4J, Log4J2 등 많은 라이브러리가 있지만, 이것들을 통합해서 인터페이스로 제공하는 것이바로 SLF4J 라이브러리이다.

    실무에선 스프링부트가 기본으로 제공하는 라이브러리를 많이 활용한다.

     

     

     

    로그 선언

    private Logger log = LoggerFactory.getLogger(getClass());
    private static final Logger log = LoggerFactory.getLogger(Xxx.class);
    @Slf4j // lombok에서 제공하는 어노테이션기반의 선언

     

     

    로그호출

    log.trace("trace log = {}", variable);
    log.debug("debug log = {}", variable);
    log.info("info log = {}", variable);
    log.warn("warn log = {}", variable);
    log.error("error log = {}", variable);

    println은 단순히 그 값을 출력하고 레벨단위로 나누어 관리할 수 없다.

    하지만, log라이브러리를 사용하면, 출력값이 훨씬 더 많은 정보를 담고 있고, 레벨단위로 나누어 관리도 가능하며,

    필요에 따라 저장하는 기능까지 갖추고 있다. 때문에 print를 사용하기 보단 log라이브러리를 활용하자

     

     

    로그가 보여주는 포멧

    2023-06-12T20:26:35.527+09:00  INFO 41036 --- [nio-8080-exec-2] c.springmvc.basic.LogTestController      : info log =Spring

    시간정보 / 로그레벨 /  프로세스 아이디 / 쓰레드명 / 클래스명 / 로그 메세지 등 다양한 정보를 보여주고 있다. 

     

     

     

    로그레벨 및 설정 방법

    로그 레벨은 크게 중요도에 따라 5단계로 구분한다.

    TRACE > DEBUG > INFO > WARN > ERROR

    보통, 개발 서버는 debug 레벨부터 출력하여 확인을 하고,

    운영 서버의 경우에는 INFO 레벨부터 출력을 한다.

     

    해당 프로잭트별로 로그레벨을 설정하는 방법은  application.properties 에서 설정하는 방법이 있다.

    #전체 로그 레벨 설정(기본 info)
    logging.level.root=info

    #hello.springmvc 패키지와 그 하위 로그 레벨 설정 방법
    logging.level.hello.springmvc=debug

     

     

     

     

    로그의 올바른 사용 방법

    log.info(message, variable)

    log의 다양한 메소드들은 위에서 보듯이, 메세지와 이에 들어갈 변수를 매개변수로 받는 방법을 주로 사용한다.

    log.trace("trace log = {}", name);

    문자열이기 때문에 + 연산자를 사용해도되긴하나,

    자바특성상 + 연산자를 사용하면, 보여지지 않아도되는 log에도 내부적으로 + 연산을 수행하기 때문에 불필요한 작업을 수행하게 된다.

    때문에 앞으로는 항상 문자열과 이에들어갈 변수를 매개변수로 받는 방법을 사용하자!

    'Spring > MVC1-스프링MVC 기본기능편' 카테고리의 다른 글

    요청 매핑  (0) 2023.06.17
Designed by Tistory.