web-dev-qa-db-de.com

Gibt es einen Adapter, damit log4j2 über slf4j funktioniert?

Ich habe eine Drittanbieter-Bibliothek (elasticsearch 5.x), die log4j2 verwendet. Meine Anwendung verwendet slf4j. Gibt es einen Adapter für Version 2 von log4j, ähnlich dem Adapter für Version 1 (log4j-over-slf4j)?

Nur zur Verdeutlichung: Ich möchte log4j oder log4j2 nicht als eigentliche Implementierung (Bindung) verwenden. Ich benutze Logback dafür. Also brauche ich einen log4j2 to slf4j Adapter, keine slf4j Bindung.

Ich sollte auch erwähnen, dass ich diese Bibliothek (in der 2.0-Beta-Version) gefunden und ausprobiert habe: https://logging.Apache.org/log4j/2.0/log4j-to-slf4j/index.html aber es gibt mir diesen Fehler:

Caused by: Java.lang.AbstractMethodError: org.Apache.logging.slf4j.SLF4JLoggerContextFactory.getContext(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Z)Lorg/Apache/logging/log4j/spi/LoggerContext;
at org.Apache.logging.log4j.LogManager.getContext(LogManager.Java:175)
at org.Apache.logging.log4j.LogManager.getLogger(LogManager.Java:426)
at org.elasticsearch.common.logging.ESLoggerFactory.getLogger(ESLoggerFactory.Java:49)
at org.elasticsearch.common.logging.Loggers.getLogger(Loggers.Java:105)
at org.elasticsearch.common.logging.Loggers.getLogger(Loggers.Java:72)
at org.elasticsearch.common.component.AbstractComponent.<init>(AbstractComponent.Java:37)
at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.Java:98)
at org.elasticsearch.client.transport.TransportClient.newPluginService(TransportClient.Java:99)
at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.Java:124)
at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.Java:258)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.Java:125)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.Java:111)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.Java:101)

EDIT: Ok .. also ich glaube ich war gestern nur blind und habe nur die Beta-Version dieser Bibliothek gesehen. Daher lautet die Antwort, dass es einen Adapter gibt und dieser hier ist:

https://mvnrepository.com/artifact/org.Apache.logging.log4j/log4j-to-slf4jhttps://logging.Apache.org/log4j/2.0/log4j-to-slf4j/index .html

Die aktuellste Version ist 2.8.2

8
Nazaret K.

Log4j2 selbst enthält eine slf4j-Implementierung (log4j-slf4j-impl-2.x.jar)

Dies ist eines der Gläser in Log4j2 Distribution .


Update nachdem die Frage geklärt wurde:

Log4j2 enthält eine log4j-to-slf4j-Brücke “. Dies ist, was Sie benötigen, um die Log4j2-Protokollierung an eine andere slf4j-Implementierung weiterzuleiten.

Der erwähnte Fehler ist wahrscheinlich ein Problem inkompatibler Versionen, aber die Frage nennt keine Versionsnummern, so dass es schwer zu sagen ist.

0
Remko Popma

Sie sollten einschließen log4j-to-slf4j-2.x.jar und sicherstellen, dass nicht einschließen log4j-slf4j-impl-2.x.jar. Weitere Informationen finden Sie unter Log4j-zu-SLF4J-Adapter .

2
mmdemirbas

Ich denke, Sie können zwei Bibliotheken auswählen. Sie können es von folgender Adresse herunterladen: http://www.Java2s.com/Code/Jar/l/Downloadlog4jjar.htm oder https://logging.Apache.org/log4j/2.0/download.html oder andere.

0

Von https://logging.Apache.org/log4j/2.0/faq.html

Sie können die Adapter-JAR-Datei "log4j-to-slf4j" verwenden, wenn Ihre Anwendung die Log4j 2-API aufruft und Sie Protokollierungsaufrufe an eine SLF4J-Implementierung weiterleiten möchten.

 enter image description here

Das Slf4j-Projekt bietet keine Brücke von log4j v2 zu Slf4j (es wurde in https://www.slf4j.org/legacy.html nicht erwähnt).

Maven-Abhängigkeiten:

<dependency>
    <groupId>org.Apache.logging.log4j</groupId>
    <artifactId>log4j-to-slf4j</artifactId>
    <version>2.11.0</version>
</dependency>

Gradle-Abhängigkeit:

compile "org.Apache.logging.log4j:log4j-to-slf4j:2.10.0"

Hinweis dass das obige Paket transitiv abhängig ist von:

org.slf4j:slf4j-api:1.7.25
org.Apache.logging.log4j:log4j-api:2.10.0

Liste der Pakete: https://mvnrepository.com/artifact/org.Apache.logging.log4j/log4j-to-slf4j

0
gavenkoa