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

Elastic 5.0 client issue running on Storm server because of log4j dependency

最近我们升级到了 elastic 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. Storm 使用来自 /lib 下指定文件夹的 python 脚本加载 log4j 文件。 storm最新版本使用log4j 2.1
  2. 我将 log4j 2.6.2 文件复制到该文件夹​​中。
  3. 现在,当我部署拓扑时,storm 开始使用 CLASSPATH 中的 log4j2.6.2。
  4. Elastic 客户端得到了它需要的东西并开始工作。

在发布轻量级 Elastic Client 之前,我们将继续使用此解决方法。