2016-06-17 16 views
0

Ich versuche, log4j 2.x (2.6 genau) aus Log4j 1.x zu migrieren. Ich sehe, dass Methoden wie Logger.setLevel() in org.apache.log4j.Logger (log4j-api-Paket) nicht verfügbar ist, aber in org.apache.log4j.core.Logger (log4j-core-Paket) verfügbar ist.Verwendung von log4j2 Core-Paket vs Log4j2 api

Also im Grunde bin ich gezwungen, Kern-Klassen zu verwenden. Ist da irgendwas falsch daran? oder gibt es etwas, das ich übersehe?

+0

Warum brauchen Sie 'setLevel()'? Log4J soll aus Textdateien (XML) konfiguriert werden. Anyway, siehe diese Seite: https://logging.apache.org/log4j/2.x/manual/customconfig.html – Andreas

+0

@Andreas Es ist zu erlauben, Protokoll-Level über JMX zu ändern. So wurde es mit log4j 1.x gemacht. Gibt es einen besseren Weg, das in 2.x zu tun? –

+0

Warum können Sie etwas wie ' nicht verwenden ' In Ihrer log4j2.xml? Sie können auch andere Konfigurationen wie diese verwenden – user2699706

Antwort

0

Von der javadoc im Zusammenhang mit setLevel-Methode von log4j2 Kern - "Diese Methode ist nicht durch die öffentliche API ausgesetzt und wird in erster Linie für Komponententests bereitgestellt."

Und von log4j2 website - "Beachten Sie, dass im Gegensatz zu Log4j 1.x die öffentliche Log4j 2 API keine Methoden zum Hinzufügen, Ändern oder Entfernen von Appendern und Filtern oder Manipulieren der Konfiguration in irgendeiner Weise verfügbar macht."

& einen Weg gefunden Log Level hier in log4j2 Website FAQ Seite zu ändern. immer noch verwendet Kernpaket, aber scheint wie es ist der richtige Weg, es zu tun.

// org.apache.logging.log4j.core.config.Configurator; 

Configurator.setLevel("com.example.Foo", Level.DEBUG); 

// You can also set the root logger: 
Configurator.setRootLevel(Level.DEBUG);