当前位置: 首页 > 知识库问答 >
问题:

log4j2是否有一个适配器可以在SLF4j上工作?

赫连明诚
2023-03-14

我有一个第三方库(ElasticSearch5.x),它使用log4j2。我的应用程序使用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

共有1个答案

汪博达
2023-03-14

Log4j2本身捆绑了一个slf4j实现(log4j-SLF4j-impl-2.x.jar)

这是Log4j2发行版中的一个JAR。

问题澄清后更新:

 类似资料:
  • 问题内容: 我在诸如Amazon AWS和Cloud9等各种云平台上使用Codeception。默认情况下,这两个都没有GUI。我的问题是,您可以在这种类型的系统上运行Selenium吗?还是我需要以某种方式获取GUI? 问题答案: Selenium只是一个库,因此,如果您在配备GUI的系统上运行它,它并不特别在乎。您可能要问的是:如果我使用Selenium打开浏览器,那么该浏览器是否可以在没有G

  • 例如,我知道在检查字符串时,可以执行如下操作 但是是否有一种方法来检查一个字符是否匹配一个可能性列表?或者我必须逐一检查,例如 ...等。

  • 我正在写一个jar,打算与Spring和Ehcache一起使用。Spring要求为每个元素定义一个缓存,所以我计划为jar定义一个Ehcache,最好是作为jar中的一个资源,可以导入应用程序的主要Ehcache配置。然而,我对示例Ehcache配置文件的阅读和我的谷歌搜索并没有找到任何导入子Ehcache配置文件的方法。 有没有办法导入一个子Ehache配置文件,或者有没有其他方法来解决这个问题

  • 问题内容: 我有一个在HashMap上使用的迭代器,并且保存并加载了该迭代器。有没有办法用迭代器在HashMap中获取上一个密钥?(java.util.Iterator) 更新资料 我将其另存为Red5连接中的属性,然后将其重新加载以在我停止的地方继续工作。 另一个更新 我正在遍历HashMap的键集 问题答案: 正如其他人指出的那样,它并不直接,但是例如,如果您需要访问一个先前的元素,则可以轻松

  • 问题内容: 运行python应用程序的目标计算机将具有三个可用的网络接口。通常,所有三个网络都将有很大的不同,但是,这三个中的两个可能存在于相似的网络上。 在下面的示例中,我无法控制ETH 2上的目标地址(因为它是预配置的系统),因此我不得不选择要以编程方式使用的适配器。 我相当确定这将取决于操作系统如何路由连接。我希望有一种使用python来解决问题的平台独立方法,因为该应用程序可能需要在Win

  • 问题内容: 我有一个M5000 Sparc服务器,上面已经安装了solaris Os版本11.3()。可以在这台机器上安装docker- ce吗?我已经测试了一些解决方法,例如使用(开源泊坞窗),但是没有一个可以解决。在sparc系统上进行dockerization的解决方案是什么? 问题答案: 当前在Solaris上不支持Docker。Oracle针对Solaris的容器解决方案一直是Oracl