@Slf4j 어노테이션

seheeee_97·2024년 1월 20일
0

개인 공부

목록 보기
23/44

Slf4j : 로깅에 대한 추상 레이어를 제공하는 인터페이스의 모음
인터페이스를 사용하여 로깅을 구현하면 추후에 로깅 라이브러리를 변경할 때 코드의 변경 없이 가능함.


Slf4j 라이브러리 추가

프로젝트의 의존성 관리 도구에 Slf4j 라이브러리를 추가해야 함, Maven 기준으로 아래와 같이 추가할 수 있음

<dependencies>
    <!-- Slf4j API -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.32</version> <!-- 최신 버전으로 업데이트 가능 -->
    </dependency>
    
    <!-- 로깅 구현체 (예: Logback) -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version> <!-- 최신 버전으로 업데이트 가능 -->
    </dependency>
</dependencies>



예시 코드

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Slf4jExample {

    // 클래스마다 Logger 인스턴스 생성
    private static final Logger logger = LoggerFactory.getLogger(Slf4jExample.class);

    public static void main(String[] args) {
        // 로그 메시지 출력
        logger.info("Hello, Slf4j!");

        try {
            // 예외 발생 시 에러 레벨 로그 출력
            throw new RuntimeException("Oops! Something went wrong.");
        } catch (Exception e) {
            logger.error("Exception caught:", e);
        }
    }
}



설명

  • 라이브러리 추가
    Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 Slf4j API와 구현체(예: Logback)를 프로젝트에 추가합니다.

  • Logger 인스턴스 생성
    클래스마다 Logger 인스턴스를 생성합니다. LoggerFactory.getLogger() 메서드에는 해당 클래스를 전달하여 Logger 인스턴스를 가져옵니다.

  • 로그 메시지 출력
    logger.info(), logger.error()와 같은 메서드를 사용하여 로그 메시지를 출력합니다.
    로그 레벨에 따라 다양한 메서드를 사용할 수 있습니다.

  • 예외 로깅
    예외가 발생한 경우 logger.error("Exception caught:", e);와 같이 예외 정보를 함께 로깅할 수 있습니다.

  • 로그 설정
    로깅 설정은 각 로깅 구현체에 따라 다를 수 있습니다. 대부분의 경우 logback.xml 또는 logback.xml과 같은 설정 파일을 통해 로깅을 커스터마이징할 수 있습니다.




다른 블로그에서 찾은 더 간단한 예시

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@Slf4j
public class TestController {
    @GetMapping("/")
    public String String(String str){
        try {
            str.toString();
        } catch (NullPointerException e){
            log.trace("가장 디테일한 로그");
            log.warn("경고");
            log.info("정보성 로그");
            log.debug("디버깅용 로그");
            log.error("에러",e);
        }
        return "test";
    }
}

https://programmer93.tistory.com/m/64

0개의 댓글