欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Zookeeper中如何解決zookeeper.out文件輸出位置問題

 更新時間:2023年04月03日 10:06:49   作者:冷漠;  
這篇文章主要介紹了Zookeeper中如何解決zookeeper.out文件輸出位置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用過 Zookeeper 的小伙伴都知道,Zookeeper 中運(yùn)行日志 zookeeper.out 文件的輸出路徑默認(rèn)為啟動腳本的當(dāng)前路徑,導(dǎo)致Zookeeper 集群啟動失敗想看日志時總是不記得輸出日志在哪兒,不方便查看日志文件,所以需要修改日志輸出位置及方式,方便查看日志。

具體操作如下:

注釋:以下所用 $ZOOKEEPER_HOME 為 Zookeeper 的根目錄

修改 $ZOOKEEPER_HOME/bin/zkEnv.sh 文件

將 ZOO_LOG_DIR 設(shè)置成自定義路徑,本次設(shè)置為 ${ZOOKEEPER_PREFIX}/logs,其中 ZOOKEEPER_PREFIX 變量是此腳本開頭獲取的 Zookeeper 的 bin 路徑,我們直接以此來定位自己的日志路徑即可。

具體如下:

# 修改前
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
? ? ZOO_LOG_DIR="."
fi

# 修改后
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
# ? ?ZOO_LOG_DIR="."
? ? # 自定義運(yùn)行日志文件輸出路徑
? ? ZOO_LOG_DIR="${ZOOKEEPER_PREFIX}/logs"
fi

將日志文件寫到 Zookeeper 安裝目錄下的 logs 文件夾中(logs 不需要創(chuàng)建,它會自己創(chuàng)建)。

這樣在每次使用 zkSever.sh 的時候,都能將運(yùn)行日志 zookeeper.out 輸出到指定路徑下,但這樣配置有個問題,就是每次運(yùn)行 Zookeeper 時,此日志都會被覆蓋,而不是 append 到文件中,故每次運(yùn)行結(jié)束后只會保存有本次運(yùn)行日志,若單次運(yùn)行時間很長也會導(dǎo)致日志文件也很大。

修改 $ZOOKEEPER_HOME/conf/log4j.properties 文件

在之前的配置中,我們只是實(shí)現(xiàn)了保存本次Zookeeper運(yùn)行日志在指定路徑下,這次我們通過配置 $ZOOKEEPER_HOME/conf/log4j.properties 來使用 log4j 日志框架將 Zookeeper 每次的運(yùn)行日志都保存到指定路徑下。

修改其中的 zookeeper.root.logger、zookeeper.log.dir 這兩個參數(shù)。

具體如下:

# 修改前
zookeeper.root.logger=INFO, CONSOLE
zookeeper.log.dir=.

# 修改后
zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE
zookeeper.log.dir=/opt/module/zookeeper-3.4.10/logs

其中參數(shù) zookeeper.root.logger 是設(shè)置日志優(yōu)先級和打印方式,默認(rèn)為控制臺打印 CONSOLE,而在 zkServer.sh 中會啟動后臺命令,將控制臺輸出的日志輸出重定向到 zookeeper.out 文件中。

修改后添加了滾動產(chǎn)生文件輸出方式 ROLLINGFILE;通過參數(shù) zookeeper.log.dir 設(shè)置日志文件 zookeeper.log 的存儲路徑,這里直接采用絕對路徑,相對路徑可能不識別;默認(rèn)日志文件名為 zookeeper.log,其中所有參數(shù)都可以自定義修改。其余參數(shù)不再贅述。

修改 $ZOOKEEPER_HOME/bin/zkEnv.sh 文件

這里為什么又要修改 zkEnv.sh 文件呢?

因為 zkEnv.sh 文件中也有 log 文件的輸出位置及方式,所以我們要將其中的 ZOO_LOG4J_PROP 設(shè)置成與 log4j 配置文件中相同,避免參數(shù)覆蓋。

具體如下:

# 修改前
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
? ? ZOO_LOG4J_PROP="INFO,CONSOLE"
fi

# 修改后
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
# ? ?ZOO_LOG4J_PROP="INFO,CONSOLE"
? ? #自定義運(yùn)行日志信息輸出方式,增加了滾動輸出的方式,初始只有控制臺輸出
? ? ZOO_LOG4J_PROP="INFO,CONSOLE,ROLLINGFILE"
fi

修改 $ZOOKEEPER_HOME/bin/zkServer.sh 文件

完成以上配置就可以將日志文件按照自己想要的方式輸出,唯一美中不足的是在你設(shè)定的目錄中,仍會有 zookeeper.out 文件存在, 雖然它的 size=0,究其原因是因為 zkServer.sh 會使用 nohup 進(jìn)行 Zookeeper 的啟動,然而 nohup 必然會輸出一個日志文件到你設(shè)置的目錄中,所以修改 _ZOO_DAEMON_OUT 此處的邏輯修改掉, 就可以將zookeeper.out了。

具體如下:

#修改前
_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"

#修改后
_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.log"

修改 $ZOOKEEPER_HOME/conf/log4j.properties 文件

上述日志配置是以日志文件大小輪轉(zhuǎn)的,如果想要按照天輪轉(zhuǎn),可以將 log4j.appender.ROLLINGFILE 修改為 DaliyRollingFileAppender。

通過參數(shù) log4j.appender.ROLLINGFILE.MaxBackupIndex 設(shè)置最大日志數(shù)量,每個日志文件大小最大默認(rèn)為 10MB,以此文件大小進(jìn)行分割。

具體如下:

# 修改前
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
#log4j.appender.ROLLINGFILE.MaxBackupIndex=10

# 修改后
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLINGFILE.MaxBackupIndex=10

DailyRollingFileAppender特點(diǎn)是固定周期時間生成一個日志文件,比如,默認(rèn)情況是每天生成一個文件。

這種日志可以方便根據(jù)時間來定位日志位置,使日志清晰易查。但是這種日志有個不好地方是,不能限制日志數(shù)量,MaxBackupIndex 屬性和 MaxFileSize 在DailyRollingFileAppender 中是無效的,這個還是按照自己的需求來定!

當(dāng)然還有其他一些參數(shù):

log4j.appender.ROLLINGFILE.File=zookeeper.log
## 按照什么頻率滾動文件:yyyy-MM(每月)、yyyy-ww(每周)、yyyy-MM-dd(每天)、yyyy-MM-dd-a(每半天)、yyyy-MM-dd-HH(每小時)、yyyy-MM-dd-HH-mm(每分鐘)
## 此處文件名為zookeeper.log.yyyy-MM-dd,最新文件名為zookeeper.log
log4j.appender.ROLLINGFILE.DataPattern='.'yyyy-MM-dd
log4j.appender.ROLLINGFILE.encoding=UTF-8
## 是否啟動追加模式,默認(rèn)為true,false為覆蓋
log4j.appender.ROLLINGFILE.Append=false

補(bǔ)充

修改原始輸出邏輯,不再將本次運(yùn)行日志信息所有輸出到 zookeeper.out 中,而是使用log4j框架輸出到 zookeeper.log 中,便于管理。而 zookeeper.out 只用于輸出標(biāo)準(zhǔn)錯誤。

具體如下所示:

注意:要想實(shí)現(xiàn)此處操作,上述 _ZOO_DAEMON_OUT=“$ZOO_LOG_DIR/zookeeper.out” 不能修改為 _ZOO_DAEMON_OUT=“$ZOO_LOG_DIR/zookeeper.log”

# 修改前
141 ? ? nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
142 ? ? -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &

# 修改后: 將原始指令注釋,設(shè)置新的輸出邏輯,只將標(biāo)準(zhǔn)錯誤輸出到zookeeper.out中.
141 # ? ?nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
142 # ? ?-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
143 ? ? nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
144 ? ? -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" 2> "$_ZOO_DAEMON_OUT" 1> /dev/null &

這樣就能保證歷史運(yùn)行日志都能輸出到指定文件夾中,并且不會因為運(yùn)行日志文件堆積造成負(fù)載點(diǎn)爆炸。

而標(biāo)準(zhǔn)錯誤都會輸出到 zookeeper.out 文件中,和運(yùn)行日志放置在同一文件夾中。

當(dāng)需要查看腳本命令錯誤時,可以查看 zookeeper.out 文件,當(dāng)需要查看程序錯誤時就查看 zookeeper.log 運(yùn)行日志文件。

需要注意的是:每次啟動 Zookeeper 時,都會覆蓋 zookeeper.out 文件,所以要做重啟處理時記得備份文件。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis 自動映射(使用需謹(jǐn)慎)

    Mybatis 自動映射(使用需謹(jǐn)慎)

    這篇文章主要介紹了Mybatis 自動映射(使用需謹(jǐn)慎),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • JSP頁面?zhèn)鲄⒊霈F(xiàn)中文亂碼的解決方案

    JSP頁面?zhèn)鲄⒊霈F(xiàn)中文亂碼的解決方案

    這篇文章主要介紹了JSP頁面?zhèn)鲄⒊霈F(xiàn)中文亂碼的解決方案,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • IDEA高效查看源碼的快捷鍵及小技巧

    IDEA高效查看源碼的快捷鍵及小技巧

    本篇文章這一部分的內(nèi)容主要為大家介紹了一些平時看源碼的時候常用的快捷鍵/小技巧!非常好用!掌握這些快捷鍵/小技巧,看源碼的效率提升一個等級
    2022-01-01
  • 深入理解Java強(qiáng)依賴和弱依賴

    深入理解Java強(qiáng)依賴和弱依賴

    本文主要介紹了深入理解Java強(qiáng)依賴和弱依賴,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Jmeter跨線程組共享cookie過程圖解

    Jmeter跨線程組共享cookie過程圖解

    這篇文章主要介紹了Jmeter跨線程組共享cookie過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 使用dom4j解析xml文件,并轉(zhuǎn)出json格式問題

    使用dom4j解析xml文件,并轉(zhuǎn)出json格式問題

    這篇文章主要介紹了使用dom4j解析xml文件,并轉(zhuǎn)出json格式問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java?Hibernate中一對多和多對多關(guān)系的映射方式

    Java?Hibernate中一對多和多對多關(guān)系的映射方式

    Hibernate是一種Java對象關(guān)系映射框架,支持一對多和多對多關(guān)系的映射。一對多關(guān)系可以使用集合屬性和單向/雙向關(guān)聯(lián)來映射,多對多關(guān)系可以使用集合屬性和中間表來映射。在映射過程中,需要注意級聯(lián)操作、延遲加載、中間表的處理等問題
    2023-04-04
  • springBoot中的properties配置解析

    springBoot中的properties配置解析

    這篇文章主要介紹了springBoot中的properties配置解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JSON反序列化Long變Integer或Double的問題及解決

    JSON反序列化Long變Integer或Double的問題及解決

    這篇文章主要介紹了JSON反序列化Long變Integer或Double的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java高級架構(gòu)之FastDFS分布式文件集群詳解

    Java高級架構(gòu)之FastDFS分布式文件集群詳解

    這篇文章主要介紹了Java高級架構(gòu)之FastDFS分布式文件集群詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論