728x90
반응형
1. SLF4J Logger란?
SLF4J(Simple Logging Facade for Java)는 로그 시스템을 추상화한 인터페이스입니다.실제 로그를 출력하는 구현체(Logback, Log4j 등)를 교체하더라도, 코드를 수정하지 않고 사용할 수 있도록 도와주는 로깅의 통일된 표준 인터페이스입니다.
2. IntelliJ에서 SLF4J + Logback 설정 방법 Java 프로젝트에 SLF4J를 적용하기 위해 일반적으로 Logback이라는 구현체를 함께 사용합니다.
1) Maven 프로젝트일 경우
pom.xml에 다음 의존성을 추가합니다.
<dependencies>
<!-- SLF4J API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
<!-- Logback: SLF4J 구현체 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
</dependencies>
2) Gradle 프로젝트일 경우
build.gradle 파일에 다음을 추가합니다.
dependencies {
implementation 'org.slf4j:slf4j-api:1.7.36'
implementation 'ch.qos.logback:logback-classic:1.2.11'
}
3. SLF4J Logger 사용 방법
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyService {
private static final Logger logger = LoggerFactory.getLogger(MyService.class);
public void doSomething() {
logger.info("서비스 로직 시작");
logger.warn("경고: 잘못된 값 감지 - ID: {}", 123);
logger.error("에러 발생", new RuntimeException("예외 발생"));
}
}
logger.warn("경고: 잘못된 값 감지 - ID: {}", 123);
이 구문에서 {} 자리에 123이 들어가며, SLF4J의 대표적인 기능입니다. 문자열 연결보다 효율적입니다.
4. 🧱 로그 레벨 종류
로그 레벨 | 설명 |
trace | 가장 상세한 디버깅 로그 (보통 거의 사용하지 않습니다) |
debug | 개발 중 디버깅용 로그 |
info | 일반적인 정보 로그 |
warn | 주의해야 할 상황을 알릴 때 |
error | 예외나 심각한 오류가 발생했을 때 |
5. 로그 설정 파일: logback.xml
src/main/resources 폴더 아래에 logback.xml 파일을 추가합니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
이 설정은 콘솔에 다음과 같은 형식으로 로그를 출력합니다:
2025-04-04 14:33:27 [main] INFO com.example.MyService - 서비스 로직 시작
6. 로그를 사용하는 이유
- System.out.println()보다 훨씬 유용하고 성능도 뛰어납니다.
- 로그 수준을 조절하여 개발/운영 환경에 맞는 로그를 출력할 수 있습니다.
- 파일 저장, 로그 분리, 시간별/레벨별 로그 관리 등 다양한 기능을 활용할 수 있습니다.
728x90
반응형
'Java' 카테고리의 다른 글
[Java-Enum] 자바 Enum 매핑: 이해와 활용법 (1) | 2024.12.24 |
---|---|
[Java] 2. Java 핵심 라이브러리 (0) | 2023.06.27 |
[Java] 1. What is Java? (0) | 2023.06.27 |
java.lang.ClassNotFoundException 오류 (0) | 2023.03.09 |
Eclipse - Tomcat 정보: 프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: (0) | 2023.03.07 |