由于log4j依赖性,在Storm服务器上运行的弹性5.0客户端问题

时间:2016-11-21 15:54:03

标签: log4j client apache-storm

最近我们升级到了弹性5.0。 Elastic 5.0中的Java客户端对log4j 2.6有很强的依赖性。另一方面,Storm服务器(版本1.0.2)使用较旧版本的log4J,两者都是硬连线依赖。以下是我们在尝试部署到服务器时遇到的错误,我可以看到'PreBuiltTransportClient'无法实例化。

java.lang.NoSuchMethodError:org.apache.logging.log4j.Logger.info(Ljava / lang / String; Ljava / lang / Object;)V

我已经提出了Elastic的问题,他们已经承认了这个问题,并提到他们正在开发一个具有较少依赖关系的真正客户端。

任何解决此问题的解决方法或建议?

1 个答案:

答案 0 :(得分:0)

我为此找到了一个解决方案,现在正在运行。这就是我做的,

  1. Storm使用/ lib下指定文件夹中的python脚本加载log4j文件。最新版本的storm使用log4j 2.1
  2. 我将log4j 2.6.2文件复制到该文件夹​​中。
  3. 现在,当我部署我的toplogy时,风暴开始在CLASSPATH中使用log4j2.6.2。
  4. 弹性客户端得到了它需要的东西,它开始工作。
  5. 在轻量级弹性客户端发布之前,我们将继续使用此解决方法。