2017-01-04 159 views
2

我正在使用log4j 1.2與commons-logging。現在我正在嘗試將其升級到log4j2。 但是如何使用log4j2和commons-logging來初始化log4j2。與log4j2共享日誌

我試圖以下面的方式初始化公用日誌記錄。型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是從log4j的1.2類,其中從log4j2改變爲org.apache.logging.log4j.Logger

現在我升級到log4j2之後,Statement1將不起作用Log4JLogger()構造函數需要類型爲org.apache.log4j.Logger類型的參數。

那麼,我該如何使用Log4j2的commons logging?

回答

2

您需要將log4j-jcl-2.7依賴項添加到您的類路徑中。

參見「which jars" question in the FAQ

在你的代碼,使用

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

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

你不應該明確地使用Log4JLogger

而且,要知道,Log4j2是,它從Log4j的1不同在它的API和它的實現之間提供了一個清晰的分隔,因此使用包裝庫的好處遠遠少於10年前Log4j 1的效果。

請考慮直接使用Log4j2 API:它使您可以在API和實現之間進行相同的分離,並且功能比commons logging或slf4j更豐富。

請注意,直接使用Log4j2 API幾乎沒有風險:如果您改變主意並決定將Logback(或其他slf4j實現)用於直接使用Log4j2 API的應用程序,則log4j-to-slf4j-2.x模塊始終存在。

+0

我知道我必須使用jcl for log4j2來工作。但是,爲了初始化記錄器,我必須使用哪個類/構造函數? – user3207875

+0

我更新了我的答案。 –