Site icon 时鹏亮的Blog

ElasticSearch Log4j 版本升级方法

请知悉:本文最近一次更新为 2年 前,文中内容可能已经过时。

最近Log4j的漏洞搞的互联网乌烟瘴气的……大部分Java栈的同学都为此忙了起来。

ElasticSearch是最常见的搜索引擎,Java开发的,默认使用的还是2.11的Log4j,也在漏洞影响的范围。

呐,我本身并不怎么玩儿Java,但因为项目用到了ElasticSearch,所以在官方未出台方案前,根据浩哥建议,直接替换对应低版本jar包可解决问题。

那么问题来了,在只有源码和IDEA的情况下,如何build Log4j呢?经过一些摸索,找到个方法,当然,这二把刀的方法只能说是能用,你要说专业优雅那绝对谈不上。

如果有Java的大拿知道一些优雅的姿势方法,还望不吝赐教。

下面说下编译方法:

  1. 前置IDEA已经搞定了maven。
  2. https://downloads.apache.org/logging/log4j/2.15.0/ 下载src源码并解压。
  3. 重命名toolchains-sample-win.xmltoolchains.xml
  4. 备份IDEA的配置文件(注意,以下路径需替换为自己IDEA安装的实际路径): D:\Program Files\JetBrains\IntelliJ IDEA 2021.1\plugins\maven\lib\maven3\conf\toolchains.xml

    将刚才重命名的xml覆盖同目录文件。

  5. 打开toolchains.xml,修改里面实际jdkHome的路径,缺什么补什么,比如没有Java9,那就下载一个Java9并把路径改对。
  6. 命令行进入源码目录,使用以下指令编译(注意,pom.xml的elastic.version建议修改为你对应的版本): mvn install -DskipTests
  7. 之后,耐心等待各种编译下载(必要时可以启动IDEA打开源码目录,也会自动sync下载所需依赖)。
  8. 基本上编译出如下四个文件就可以了: log4j-1.2-api-2.15.0.jar
    log4j-api-2.15.0.jar
    log4j-core-2.15.0.jar
    log4j-slf4j-impl-2.15.0.jar
  9. 删除ElasticSearch目录下的对应jar: rm -rf /elasticsearch/lib/log4j-api-2.11.1.jar
    rm -rf /elasticsearch/lib/log4j-core-2.11.1.jar
    rm -rf /elasticsearch/modules/repository-url/log4j-1.2-api-2.11.1.jar
    rm -rf /elasticsearch/modules/x-pack-core/log4j-1.2-api-2.11.1.jar
    rm -rf /elasticsearch/modules/x-pack-identity-provider/log4j-slf4j-impl-2.11.1.jar
    rm -rf /elasticsearch/modules/x-pack-security/log4j-slf4j-impl-2.11.1.jar
  10. 将最新版文件复制过去: cp log4j-api-2.15.0.jar /elasticsearch/lib/
    cp log4j-core-2.15.0.jar /elasticsearch/lib/
    cp log4j-1.2-api-2.15.0.jar /elasticsearch/modules/repository-url/
    cp log4j-1.2-api-2.15.0.jar /elasticsearch/modules/x-pack-core/
    cp log4j-slf4j-impl-2.15.0.jar /elasticsearch/modules/x-pack-identity-provider/
    cp log4j-slf4j-impl-2.15.0.jar /elasticsearch/modules/x-pack-security/
  11. 注意修改好文件权限,之后重启ElasticSearch服务即可。
  12. 当然,其实下载源码的地方,bin的压缩包里就是编译好的jar,我整理只是为了梳理下基本的编译流程,迫切需要jar包的同学可以直接下载bin的包。

参考资料

https://github.com/apache/logging-log4j2

运行mvn install时跳过Test


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《ElasticSearch Log4j 版本升级方法》相关的博文:

Exit mobile version