본문 바로가기

코딩/Java

@Slf4j로 스프링 애플리케이션에 로그 남기기

반응형

개발을 할때도, 서비스를 운영할때도

'로그(Log)를 남기는 것' 은 항상 중요합니다.

 

하지만 log를 남기고 싶다고

데이터를 출력해주는 System.out.println()을 사용하는 것은

log를 남기기에 충분한 정보를 담기도 어렵고

성능상의 문제를 발생시킬 수 있기 때문에

logging 수단으로는 잘 사용하지 않습니다.

 

그래서 log를 잘 남길 수 있는 logger들을 사용하게 되는데,

이때 Slf4j(Simple Logging Facade for Java)를 함께 사용합니다.

 

Slf4j가 뭐냐면 logging에 대한 추상 레이어를 제공하는 인터페이스를 모아놓은 라이브러리입니다.

 

눈치 빠른 분들은 바로 알아채셨겠지만

Slf4j는 추상 클래스를 제공하기 때문에 단독으로 사용할 수 없습니다.

 

그래서 직접 log를 남길 수 있는 logback 같은 logging 프레임워크를

함께 사용해줘야 합니다.

 

좀 더 간단히 말하자면,

 

개발 단계에서 Slf4j를 이용해 logging 코드를 작성하면,

바인딩 된 logging 프레임워크가 운영 단계에서 log를 남깁니다.


Slf4j는 세가지 모듈을 제공합니다.

처음 Slf4j를 접하는 거라면

각 모듈들을 각각 이해하기보다는

세가지 모듈들 역할을 살펴보면서

Slf4j와 logger가 어떤 관계를 가지는지를 잘 이해하는게 중요합니다.

 

Slf4j API

Slf4j를 사용하기 위한 인터페이스를 제공해줍니다.

 

Slf4j Binding

Slf4j 인터페이스를 logging 구현체에 연결해주는 어댑터

 

Slf4j Bridging Modules

logging API로 logger 호출 시 Slf4j 인터페이스로 redirect해서 Slf4j가 대신 logger를 처리할 수 있도록 하는 어댑터


이제 직접 코드를 작성해보겠습니다.

 

@Slf4j 어노테이션을 사용하기 위해서는 우선 lombok 의존성이 필요합니다.

 

lombok 의존성을 추가했다면 아래와 같은 클래스를 생성합니다.

@Slf4j
public class LogTest {

    public static void main(String[] args) {
        log.error("error test");
        log.warn("warn test");
        log.info("info test");
    }
}

스프링을 실행하면 로그가 찍히는 것을 확인하실 수 있습니다.

참고로 log의 중요도는 3단계로 나타낼 수 있으며

error > warn > info 순으로 중요도가 낮아집니다.

  • error : 즉시 조치가 필요한 문제
  • warn : 서비스 운영에 문제는 없지만 주의 필요
  • info : 서비스 운영에 참고 필요
반응형

'코딩 > Java' 카테고리의 다른 글

[Java] 369 게임 알고리즘  (0) 2023.06.01
[Java] 윤년 계산하는 알고리즘(feat. 백준 2753)  (0) 2023.05.31