概述
在啓動zookeeper時,默認zookeeper的日誌輸出信息都打印到了執行啓動命令時當前所在的目錄下zookeeper.out文件中。顯然,這樣zookeeper的日誌輸出路徑沒法控制,因爲我們不確定每次執行啓動命令的路徑在哪裏。另外,默認zookeeper的日誌輸出到日誌文件是不會自動輪循切割的,這對於之後我們查看日誌和管理日誌極爲不方便。所以,現在需要我們修改zookeeper日誌輸出方式。
第一步:修改$ZOOKEEPER_HOME/bin目錄下的zkEnv.sh文件
此文件中的變量ZOO_LOG_DIR可以指定想要輸出到哪個目錄;
此文件中的變量ZOO_LOG4J_PROP可以規定讓日誌自動輪循與否(比如:按照日誌大小輪循、按天進行輪循等)。
[root@zookeeper bin]# pwd
/home/zookeeper-3.4.12/bin
[root@zookeeper bin]# ll
總用量 44
-rwxr-xr-x. 1 xzds 1000 232 3月 27 2018 README.txt
-rwxr-xr-x. 1 xzds 1000 1937 3月 27 2018 zkCleanup.sh
-rwxr-xr-x. 1 xzds 1000 1056 3月 27 2018 zkCli.cmd
-rwxr-xr-x. 1 xzds 1000 1534 3月 27 2018 zkCli.sh
-rwxr-xr-x. 1 xzds 1000 1759 3月 27 2018 zkEnv.cmd
-rwxr-xr-x. 1 xzds 1000 2696 3月 27 2018 zkEnv.sh ### 修改底層啓動腳本 ###
-rwxr-xr-x. 1 xzds 1000 1089 3月 27 2018 zkServer.cmd
-rwxr-xr-x. 1 xzds 1000 6773 3月 27 2018 zkServer.sh
-rw-r--r--. 1 root root 4822 7月 15 10:03 zookeeper.out
第二步:修改$ZOOKEEPER_HOME/bin目錄下的zkServer.sh文件
找到 “_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out”(規定日誌文件的名稱)
# _ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out
_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.log
第三步:修改$ZOOKEEPER_HOME/conf/log4j.properties文件
- 將zookeeper.root.logger的值與剛剛配置的文件的ZOO_LOG4J_PROP變量的值保持一致;
zookeeper.root.logger=INFO,RollingFile ### 開啓日誌輪循功能 ###
- 將log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender 修改成log4j.appender.ROLLINGFILE=org.apache.log4j.DaliyRollingFileAppender
# log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender ### 日誌按大小輪循 ###
log4j.appender.ROLLINGFILE=org.apache.log4j.DaliyRollingFileAppender ### 日誌按天輪循 ###