[英]Is there an adapter for log4j2 to work over slf4j?
我有一個使用log4j2的第三方庫(elasticsearch 5.x)。 我的應用程序使用slf4j。 是否有適用於log4j版本2的適配器,類似於版本1適配器(log4j-over-slf4j)?
只是為了澄清:我不想實際使用log4j或log4j2作為實際的實現(綁定)。 我使用logback。 所以我需要一個log4j2到slf4j適配器,而不是slf4j綁定。
我還應該提一下,我已經找到並嘗試了這個庫(在2.0-beta版本中): 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)
編輯 :好吧..所以我想我昨天只是失明了,我只看到了這個庫的測試版。 因此答案是有適配器等,它在這里:
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-to-slf4j https://logging.apache.org/log4j/2.0/log4j-to-slf4j/index.html
最新版本目前為2.8.2
您應該包含 log4j-to-slf4j-2.x.jar
並確保不包含 log4j-slf4j-impl-2.x.jar
。 有關更多詳細信息,請參閱Log4j到SLF4J適配器 。
來自https://logging.apache.org/log4j/2.0/faq.html
當應用程序調用Log4j 2 API並且您希望將日志記錄調用路由到SLF4J實現時,可以使用log4j-to-slf4j適配器jar。
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
我想你可以選擇兩個庫。 您可以從以下網址獲取: http : //www.java2s.com/Code/Jar/l/Downloadlog4jjar.htm或https://logging.apache.org/log4j/2.0/download.html或其他。
Log4j2本身捆綁了一個slf4j實現 (log4j-slf4j-impl-2.x.jar)
這是Log4j2 發行版中的一個jar。
問題澄清后更新:
Log4j2包括一個log4j到slf4j橋 “。 這是將Log4j2日志記錄路由到另一個slf4j實現所需的。
提到的錯誤可能是版本不兼容的問題,但問題沒有提到版本號,所以很難說。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.