2017-01-04 4 views
2

Ich benutze Log4j 1.2 mit Commons-Logging. Jetzt versuche ich es auf log4j2 zu aktualisieren. Aber wie Log4j2 mit Commons-Logging zu log4j2 zu initialisieren.Commons-Logging mit Log4j2

Ich habe versucht, commons Logging auf dem Weg zu initialisieren. Sein adaequat

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

Hier verwende ich Objekt vom Typ org.apache.commons.logging.Log mit dem Objekt von org.apache.log4j.Logger initialisiert. (org.apache.log4j.Logger ist die Klasse von log4j 1.2, wo ab log4j2 zu org.apache.logging.log4j.Logger geändert wird)

Jetzt nach dem Upgrade auf log4j2, Statement1 wird nicht funktionieren, wie Log4JLogger() Konstruktor erwartet Argument des Typs org.apache.log4j.Logger Typ.

Also, wie verwende ich commons Protokollierung mit Log4j2?

Antwort

2

Sie müssen die log4j-jcl-2.7 Abhängigkeit zu Ihrem Klassenpfad hinzufügen.

Siehe "which jars" question in the FAQ.

in Ihrem Code sollte

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

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

verwenden Sie nicht explizit Log4JLogger verwenden.

, auch darüber im Klaren sein, dass Log4j2 von Log4j 1 dadurch, dass es anders ist bietet eine saubere Trennung zwischen seiner API und seiner Implementierung, so dass die Vorteile der Verwendung einer Wrapper-Bibliothek jetzt viel geringer sind als vor 10 Jahren mit Log4j 1.

Erwägen Sie, die Log4j2-API direkt zu verwenden: Sie bietet dieselbe Trennung zwischen API und Implementierung und ist funktionsreicher als Commons-Protokollierung oder slf4j. Beachten Sie, dass die Verwendung der Log4j2-API ein geringes Risiko darstellt: Das Modul log4j-to-slf4j-2.x ist immer dann vorhanden, wenn Sie Ihre Meinung ändern und Logback (oder eine andere slf4j-Implementierung) mit einer Anwendung verwenden, die direkt die Log4j2-API verwendet.

+0

Ich weiß, ich muss die jcl für log4j2 zu arbeiten. Aber welche Klasse/Konstruktor muss ich verwenden, um den Logger zu initialisieren? – user3207875

+0

Ich habe meine Antwort aktualisiert. –