Zookeeper的服務器的log4j升級為log4j2的升級方案(忽略配置化兼容問題)
目前希望可以升級將Zookeeper中log4j的版本升級到log4j2版本,並且要避開相關的log4j2的安全隱患問題,此時需要考慮的就是針對於如何將無縫銜接log4j2的版本jar包的安裝呢?我們接下來觀察一下看看問題所在。目前我采用的環境是windows環境,不過也同樣對其他操作系統有效,畢竟萬變不離其宗嘛。
Zookeeper的服務的基礎目錄
windows目錄
![](https://news.xinpengboligang.com/upload/keji/048e3b019e3cce986e23b03fdab31b43.jpeg)
Linux目錄
![](https://news.xinpengboligang.com/upload/keji/180ceda94a683983d1562a69fd5b3a8a.jpeg)
尋找對應的目錄
首先我們需要進行替換相關的lib包信息,我們需要將相關的zookeeper中所相關的log4j相關的jar先遷移走,如下圖所示:
windows目錄
![](https://news.xinpengboligang.com/upload/keji/ba47ae831022b2e49c8364e372ab28a6.jpeg)
Linux目錄
![](https://news.xinpengboligang.com/upload/keji/bab040a1f0a2374cb505924f0f748198.jpeg)
下圖為Linux版本的相關的jar包展示
替換的Jar包目錄為:
- log4j-1.2.17.jar log4j的本身的jar包服務
- slf4j-api-1.7.30.jar slf4j的api官方抽象接口包
- slf4j-log4j12-1.7.30.jar 主要用於橋接處理包(slf4j與log4j的橋接之用的包)
以上案例主要采用的是針對於log4j和slf4j的jar包進行相關的處理控制。版本隻作參考之用。
參考相關的清理相關的jar包指令,可以采用rm / mv指令進行操作處理。
rm -rf slf4j-api-1.7.x.jar log4j-1.2.x.jar slf4j-log4j12-1.7.X.jar
mv slf4j-api-1.7.X.jar log4j-1.2.X.jar slf4j-log4j12-1.7.x.jar /backup 路徑也可
註意具體的版本需要,可動態靈活進行調整對應的接口參數。
下載對應的Log4j2的資源包
下載對應slf4j包
wget --no-check-certificate https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar
版本暫時統一為1.7.36,測試了一下目前屬於最穩定版本
下載對應log4j2包
wget --no-check-certificate https://dlcdn.apache.org/logging/log4j/2.19.0/apache-log4j-2.19.0-bin.tar.gz
解壓對應log4j2包zookeeper的lib包目錄下
tar -zxvf apache-log4j-2.19.0-bin.tar.gz
轉移jar包到對應的lib下之後。
轉移指定的log4j2包到Zookeeper的lib包目錄下
mv log4j-core-2.19.0.jar log4j-1.2-api-2.19.0.jar log4j-slf4j-impl-2.19.0.jar log4j-api-2.19.0.jar /{ZK_HOME}/lib
轉移指定的slf4j包到Zookeeper的lib包目錄下
mv slf4j-api-1.7.36.jar /{ZK_HOME}/lib
展示效果
![](https://news.xinpengboligang.com/upload/keji/03cfc7382ae13bc34a80de7c92993ab6.jpeg)
開始重啟Zookeeper服務,進行查看是否啟動正常
可以通過:
ps -ef | grep zookeeper
來查看是否正常啟動服務
查看是否已經存在加載的對應的jar包服務
如果沒有輸出目錄文件屬於正常情況
當然一般情況下也可以執行查看/bin/zookeeper.out文件信息,打印log。
參考案例
- SLF4J與Log4j2的完美配合
- Log4j2官方網站
- 如何將Zookeeper的log4j升級到2.16
- zookeeper-Log4j替換Log4j2
- zookeeper-Log4j替換Log4j2
參考配置(zoo.cfg)
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
![](https://news.xinpengboligang.com/upload/keji/0b517b7b5711126cc90d730a1ece074e.jpeg)