web-dev-qa-db-ja.com

log4j2がslf4j上で動作するためのアダプターはありますか?

Log4j2を使用するサードパーティのライブラリ(elasticsearch 5.x)があります。私のアプリケーションはslf4jを使用しています。バージョン1のアダプター(log4j-over-slf4j)と同様に、log4jのバージョン2用のアダプターはありますか?

明確にするために:実際の実装(バインディング)としてlog4jまたはlog4j2を実際に使用したくありません。そのためにlogbackを使用します。したがって、slf4jバインディングではなく、log4j2からslf4jへのアダプターが必要です。

また、このライブラリ(2.0ベータ版)を見つけて試したことにも言及する必要があります: https://logging.Apache.org/log4j/2.0/log4j-to-slf4j/index.html しかし、それは私にこのエラーを与えます:

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 [〜#〜]:わかりました。私は昨日は盲目だったので、ベータ版しか見ていなかったと思いますこのライブラリ。したがって、答えは、アダプターなどがあり、それがここにあるということです。

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

最新バージョンは現在2.8.2です。

13
Nazaret K.

Log4j2自体は slf4j実装 (log4j-slf4j-impl-2.x.jar)をバンドルします

これは、Log4j2 distribution のjarファイルの1つです。


質問が明確になった後の更新:

Log4j2には log4j-to-slf4jブリッジ “が含まれています。これは、Log4j2ロギングを別のslf4j実装にルーティングするために必要なものです。

言及されたエラーは互換性のないバージョンの問題である可能性がありますが、質問はバージョン番号について言及していないため、言うのは困難です。

0
Remko Popma

includelog4j-to-slf4j-2.x.jarおよびを含めないようにしますlog4j-slf4j-impl-2.x.jar。詳細については、 Log4j to SLF4J Adapter を参照してください。

2
mmdemirbas

から https://logging.Apache.org/log4j/2.0/faq.html

アプリケーションがLog4j2 APIを呼び出し、ロギング呼び出しをSLF4J実装にルーティングする場合は、log4j-to-slf4jアダプターjarを使用できます。

enter image description here

Slf4jプロジェクトは、log4j v2からSlf4jへのブリッジを提供しません( https://www.slf4j.org/legacy.html で言及されていません)。

Mavenの依存関係:

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

Gradleの依存関係:

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

上記のパッケージには推移的な依存関係があります:

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

パッケージのリスト: https://mvnrepository.com/artifact/org.Apache.logging.log4j/log4j-to-slf4j

1
gavenkoa

2つのライブラリを選択できると思います。 http://www.Java2s.com/Code/Jar/l/Downloadlog4jjar.htm または https://logging.Apache.org/log4j/2.0)から取得できます。 /download.html またはその他。

0