minlog
article thumbnail

 

로깅 SLF4J 

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

 

  • System.out.print() 대신 사용한다.  성능도 좋고 로그를 상황에 맞게 설정으로 조절 할 수 있다. 
  •  불필요한 로그를 콘솔에 남기지 않을 수 있다.  따로 파일로 남겨줄 수 있다. 
  • 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다.

 

[ 스프링 부트 로깅 라이브러리 - spring-boot-starter-logging  ]

SLF4J - http://www.slf4j.org

Logback - http://logback.qos.ch

 

쉽게 이야기해서 SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다.

실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다.

 

 

 

 

💡로그 사용 선언

@Slf4j : 롬복 사용 가능

private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class)

 

 

 

 

💡올바른 로그 사용법

❌ log.trace("trace log=" + name);  -- > 출력 하지 않아도 의미 없는 연산이 일어나게된다. 메모리 낭비

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

 

🍫 사용예시

@RestController
public class LogTestController {
    private final Logger log = LoggerFactory.getLogger(getClass());

    @RequestMapping("/log-test")
    public String logTest(){
        String name = "spring";

        System.out.println("* log 테스트 **********");
        log.trace("trace log={}",name);
        log.debug("debug log={}",name);
        log.warn("warn log={}",name);
        log.info("info log={}",name);
        log.error("error log={}",name);
        return "OK";
    }
}

 

 

 

 

 

💡패키지와 그 하위 로그 레벨 설정이 가능하다.

application.properties 또는 application.yml에서 설정 할수 있다.

 

LEVEL : TRACE > DEBUG > INFO > WARN > ERROR

 

기본은 INFO 부터 출력된다. 모든 로그를 다 보고 싶을때 trace를 사용한다. 

EX) 보통 개발 서버는 debug 출력,  운영 서버는 info 출력하게 설정한다.

 

 

📑 application.properties (기본 로그 출력 레벨)

logging.level.root=info

 

📑 application.properties (패키지 별 로그 출력 레벨 설정)

logging.level.hello.springmvc=trace

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!