SLF4J Guide
SLF4J ?
- 별도의 파라미터 포매팅 개념을 도입한 "Parameterized loggin method."
- example)
- commons-loggin: logger.debug("The new entry is "+entry+".");
- SLF4J: logger.debug("The new entry is {}.", entry);
- 두가지의 속도차이는 약 30배 가량 발생.
- 로깅을 남겨야할 필요가 있을 때 Formatting anchor로 불리는 '{}'를 메소드의 파라미터로 받은 값으로 교체. 로깅을 남길 필요가 없는 상황에서는 문자열을 구성하지 않는다.
How to use SLF4J
- 객체 생성
- Logger logger = LoggerFactory.getLogger(클래스이름.class);
- 실 사용예제
- method type : info, debug, error, warn ...
- method type : info, debug, error, warn ...
Only String :
logger.method_type("Test");
Parameter
logger.method_type("ParamTest : {}, test_object);
Maven Dependency
- JCL 라이브러리에 의존할 생각이 없기 때문에 빼버리는 것
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> <exclusions> <!– Exclude Commons Logging in favor of SLF4j –> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
- JCL에 의존하는 클래스들이 깨질 텐데 그것을 JCL-over-SLF4J를 이용해서 겉은 JCL 같지만 내부에서는 SLF4J API를 호출하도록 일종의 어댑터 나 다리 역할을 해주는 라이브러리를 추가
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j.version}</version> </dependency>
<dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j.version}</version> <scope>runtime</scope> </dependency>
- SLF4J API를 추가한 뒤 실제 사용할 로거로 SL4J를 구현한 SLF4J-Log4J 라이브러리를 추가
최종적으로 사용할 로거 Log4J를 추가한 것입니다. 이때 Log4J가 불필요하게 참조하는 jmx, mail, jms 등의 라이브러리를 제외<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency>
반응형
'Programming > Java' 카테고리의 다른 글
JAVA gettter,setter 생성 단축키 (0) | 2012.02.21 |
---|