개요
SLF4J(Simple Logging Facade for Java)는 배포 시점에 여러 로깅 프레임웍 중 하나를 적용할 수 있도록 해주는 퍼사드(Facade) 이다.
간단한 이력
버전 1.6.0 이후
클래스패스에 바인딩 된 로깅 프레임워크가 없는 경우 최초 1번의 경고 메시지만을 출력하며, 이후의 로그정보를 출력하지 않는다.
버전 1.7.0 이후
Object[] 대신 varargs 기능을 사용할 수 있으며,버전 1.6 과 100% 호환된다.(JDK 1.5 이상 필요)
버전 1.7.5 이후
주요한 성능 향상이 이루어졌으므로, 하위 버전은 1.7.5 이상의 상위버전으로 전환할 것을 권장한다.
설치 방법
- 로깅 프레임웍 라이브러리를 클래스패스에 두면 자동으로 바인딩 된다. 이 때 로깅프레임웍을 지원하는 SLF4J 라이브러리가 필요하다.
- SLF4J bound to logback-classic
- slf4j-api-xxx.jar / logback-classic.jar, logback-core.jar
- Logback은 SLF4J의 로거 인터페이스를 직접 구현한 것으로, 가장 효율적이다.
- SLF4J bound to log4j
- slf4j-api-xxx.jar / log4j.jar / slf4j-log4j12-xxx.jar
- SLF4J bound to java.util.logging
- slf4j-api-xxx.jar / jvm runtime / slf4j-jdk14-xxx.jar
- 로깅 프레임웍의 변경은 클래스패스에서 해당 라이브러리를 변경해주기만 하면 된다.
- SLF4J는 컴파일 타임에 하나의 특정 로깅 프레임웍만을 사용하도록 되어 있다. 둘 이상 사용하지 마라.
사용 방법
{}을 Formatting Anchor라고 부른다. Formatting Anchor를 이용하여 아래와 같이 코드를 작성한다.
int a = 1;int b = 2;logger.info(“a는 {}, b는 {} 이다.”, a, b);출력결과 : a는 1, b는 2 이다.cs
로그 출력 결과에 {} 문자열을 출력하고 싶은 경우 역슬래시를 이용한다.
logger.info(“a는 \{}, b는 {} 이다.”, “2”);출력결과 : a는 {}, b는 2 이다.cs
기타
기존에 작성된 코드가 JCL(Jakarta Commons Logging), Log4j, JUL(java.util.logging)을 사용하는 경우 SLF4J로 전환해주는 툴을 제공한다. (관련 링크)