2017-01-04 1 views
2

log4j 1.2를 commons-logging과 함께 사용하고 있습니다. 이제 log4j2로 업그레이드하려고합니다. 그러나 log4j2를 commons-logging과 함께 사용하여 log4j2를 초기화하는 방법.log4j2로 Commons-logging하기

아래의 방법으로 공유지를 초기화하려고했습니다. 유형 org.apache.commons.logging.Log의 그것의 작업을 잘 여기

**Statement1**: static Log log = new Log4JLogger(Logger.getLogger(Example.class)); 
**Statement2**:log.debug("debug statement"); 

내가 사용하고 개체가 org.apache.log4j.Logger의 객체로 초기화.

( org.apache.log4j.Logger는 log4j2 일부터 org.apache.logging.log4j.Logger로 변경 log4j에 1.2에서 클래스) 내가 log4j2로 업그레이드 한 후 Log4JLogger() 생성자 유형 org.apache.log4j.Logger 유형의 인수가 예상대로

지금, 문 1이 작동하지 않습니다.

그래서 Log4j2로 공용 공유를 사용하려면 어떻게해야합니까?

답변

2

클래스 경로에 log4j-jcl-2.7 종속성을 추가해야합니다.

이 (가) " which jars" question in the FAQ. 당신의 코드에서

, 당신은 명시 적으로 Log4JLogger를 사용해서는 안

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class MyClass { 
    private Log log = LogFactory.getLog(MyClass.class); 
    ... 

사용을 참조하십시오. 또한

, Log4j2가 그것에 Log4j의 1과 다른 점에 유의 API와 구현 간의 명확한 구분을 제공하므로 래퍼 라이브러리를 사용하면 10 년 전 Log4j 1보다 훨씬 적은 이점을 얻을 수 있습니다.

Log4j2 API를 직접 사용하는 것이 좋습니다. API와 구현간에 동일한 구분을 제공하며 commons logging 또는 slf4j보다 더 풍부한 기능을 제공합니다.

Log4j2 API를 직접 사용하는 데 따르는 위험이 거의 없음을 유의하십시오. Log4j2 API를 직접 사용하는 애플리케이션에서 Logback (또는 다른 slf4j 구현)을 사용하기로 결정한 경우모듈이 항상 존재합니다.

+0

Log4j2에서 jcl을 사용해야한다는 것을 알고 있습니다. 하지만 어떤 클래스/생성자, 나는 로거를 초기화하기 위해 사용해야합니까? – user3207875

+0

답을 업데이트했습니다. –

관련 문제