반응형
1. slf4j란?
slf4j(Simple Logging Facade for Java)는 다양한 로깅 프레임워크 (예: Logback, Log4j, java.util.logging 등)와 통합될 수 있는 추상화 레이어를 제공하는 라이브러리입니다. 이를 통해 코드에서 로깅 API를 통일시켜 로깅 백엔드를 교체하더라도 코드의 변경 없이 일관되게 사용할 수 있습니다.
2. slf4j 의존성 추가하기
Spring Boot 프로젝트에서 slf4j를 활용하기 위해 기본적으로 Logback이 포함되어 있습니다. 하지만 프로젝트에서 명시적으로 추가하고자 한다면 pom.xml에 의존성을 추가할 수 있습니다.
<dependencies>
<!-- slf4j API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
<!-- Logback implementation -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.10</version>
</dependency>
</dependencies>
3. slf4j를 사용하는 기본 방법
로거 인스턴스를 사용하여 메시지를 기록하려면 LoggerFactory를 사용하여 로거를 생성합니다. 일반적으로 클래스 상단에 다음과 같이 선언합니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyService {
private static final Logger logger = LoggerFactory.getLogger(MyService.class);
public void execute() {
logger.info("Service is executing...");
logger.debug("This is a debug message.");
logger.error("An error occurred.");
}
}
4. 로그 레벨
- TRACE: 상세한 디버깅 정보, 보통 문제 해결 시 사용됩니다.
- DEBUG: 디버그 목적으로 유용한 정보를 제공합니다.
- INFO: 일반적인 애플리케이션 흐름에 대한 메시지를 기록합니다.
- WARN: 잠재적 문제를 나타냅니다.
- ERROR: 오류 또는 예외를 기록하며, 애플리케이션 동작에 영향을 줄 수 있는 경우 사용됩니다.
Spring Boot는 기본적으로 application.properties 또는 application.yml에서 로깅 레벨을 설정할 수 있습니다.
예: application.properties에서 로그 레벨 설정
logging.level.com.example.myapp=DEBUG
5. 동적 매개변수 활용
slf4j는 동적 매개변수를 포맷팅하여 로깅할 수 있는 편리한 기능을 제공합니다.
int userId = 1234;
logger.info("User with ID {} logged in.", userId);
6. 로깅 전략과 팁
- 효율성을 고려한 조건부 로깅
디버그 로그는 조건부로 확인하는 것이 좋습니다.
if (logger.isDebugEnabled()) {
logger.debug("Debug data: {}", expensiveOperation());
}
민감한 정보 제외
로깅 시 비밀번호나 민감한 데이터를 노출하지 않도록 주의하세요.
'SpringBoot' 카테고리의 다른 글
SpringBoot -비밀번호 암호화 및 사용자 인증하기 (0) | 2024.11.24 |
---|---|
SpringBoot - JWT 구현 (기초) (0) | 2024.11.23 |
SpringBoot - 백엔드 개발할 때 알아두면 좋은 기술 스택 (1) | 2024.11.16 |
SpringBoot - Could not find artifact mysql:mysql-connector-java:pom:unknown in mvn2s [에러] (0) | 2024.09.24 |
SpringBoot - Consider defining a bean named 'entityManagerFactory' in your configuration [에러] (0) | 2024.09.24 |