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 ...

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