最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

使用過 Zookeeper 的小伙伴都知道,Zookeeper 中運行日志 zookeeper.out 文件的輸出路徑默認為啟動腳本的當(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="."
? ? # 自定義運行日志文件輸出路徑
? ? ZOO_LOG_DIR="${ZOOKEEPER_PREFIX}/logs"
fi

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

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

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

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

修改其中的 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)先級和打印方式,默認為控制臺打印 CONSOLE,而在 zkServer.sh 中會啟動后臺命令,將控制臺輸出的日志輸出重定向到 zookeeper.out 文件中。

修改后添加了滾動產(chǎn)生文件輸出方式 ROLLINGFILE;通過參數(shù) zookeeper.log.dir 設(shè)置日志文件 zookeeper.log 的存儲路徑,這里直接采用絕對路徑,相對路徑可能不識別;默認日志文件名為 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"
? ? #自定義運行日志信息輸出方式,增加了滾動輸出的方式,初始只有控制臺輸出
? ? ZOO_LOG4J_PROP="INFO,CONSOLE,ROLLINGFILE"
fi

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

完成以上配置就可以將日志文件按照自己想要的方式輸出,唯一美中不足的是在你設(shè)定的目錄中,仍會有 zookeeper.out 文件存在, 雖然它的 size=0,究其原因是因為 zkServer.sh 會使用 nohup 進行 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ù)量,每個日志文件大小最大默認為 10MB,以此文件大小進行分割。

具體如下:

# 修改前
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特點是固定周期時間生成一個日志文件,比如,默認情況是每天生成一個文件。

這種日志可以方便根據(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
## 是否啟動追加模式,默認為true,false為覆蓋
log4j.appender.ROLLINGFILE.Append=false

補充

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

具體如下所示:

注意:要想實現(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 &

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

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

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

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

總結(jié)

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

相關(guān)文章

  • 使用Java實現(xiàn)文件夾的遍歷操作指南

    使用Java實現(xiàn)文件夾的遍歷操作指南

    網(wǎng)上大多采用java遞歸的方式遍歷文件夾下的文件,這里我不太喜歡遞歸的風(fēng)格,這篇文章主要給大家介紹了關(guān)于使用Java實現(xiàn)文件夾的遍歷操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Java 數(shù)據(jù)類型及類型轉(zhuǎn)換的互相轉(zhuǎn)換實例代碼

    Java 數(shù)據(jù)類型及類型轉(zhuǎn)換的互相轉(zhuǎn)換實例代碼

    這篇文章主要介紹了Java 數(shù)據(jù)類型及類型轉(zhuǎn)換的互相轉(zhuǎn)換實例代碼,需要的朋友可以參考下
    2020-10-10
  • 解決Spring或SpringBoot開啟事務(wù)以后無法返回自增主鍵的問題

    解決Spring或SpringBoot開啟事務(wù)以后無法返回自增主鍵的問題

    這篇文章主要介紹了解決Spring或SpringBoot開啟事務(wù)以后無法返回自增主鍵的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中自增和自減操作符(++/--)的那些事

    Java中自增和自減操作符(++/--)的那些事

    這篇文章主要給大家介紹了關(guān)于Java中自增和自減操作符(++/--)的那些事,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • SpringBoot后臺實現(xiàn)文件上傳下載

    SpringBoot后臺實現(xiàn)文件上傳下載

    這篇文章主要為大家詳細介紹了SpringBoot后臺實現(xiàn)文件上傳下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java基礎(chǔ)-Java常量和常量值

    Java基礎(chǔ)-Java常量和常量值

    這篇文章主要介紹了Java基礎(chǔ)-Java常量和常量值,在程序中存在大量的數(shù)據(jù)來代表程序的狀態(tài),其中有些數(shù)據(jù)在程序運行過程中值不能發(fā)生改變,這些數(shù)據(jù)在程序中被叫做常量,下面文章對Java常量和常量值的詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • Java后端調(diào)用微信支付和支付寶支付的詳細步驟

    Java后端調(diào)用微信支付和支付寶支付的詳細步驟

    這篇文章主要介紹了Java后端如何調(diào)用微信支付和支付寶支付,涵蓋了基本概念、配置步驟、代碼示例以及注意事項,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-04-04
  • 解決Maven本地倉庫明明有對應(yīng)的jar包但還是報找不到的問題

    解決Maven本地倉庫明明有對應(yīng)的jar包但還是報找不到的問題

    這篇文章主要介紹了解決Maven本地倉庫明明有對應(yīng)的jar包但還是報找不到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解Java方法method的定義與調(diào)用及重載

    詳解Java方法method的定義與調(diào)用及重載

    方法,也稱函數(shù),如果想要重復(fù)一段或者多段代碼塊的使用,可以將這些代碼封裝成一個方法,方法具體表現(xiàn)為某種行為,使用方法可以提高代碼的復(fù)用性
    2022-04-04
  • Java并發(fā)之Semaphore工具類r的全面解析

    Java并發(fā)之Semaphore工具類r的全面解析

    Semaphore 是 java.util.concurrent中非常有用的并發(fā)編程工具類,它通常被用于限制對某個資源或資源池的并發(fā)訪問數(shù)量,下面我們就來深入了解一下Semaphore的具體使用吧
    2024-02-02

最新評論

池州市| 宣威市| 商南县| 调兵山市| 德保县| 镇原县| 青川县| 彭阳县| 六枝特区| 葫芦岛市| 惠安县| 福清市| 崇礼县| 博客| 高台县| 南投县| 措美县| 荆州市| 荆门市| 保康县| 沧州市| 韶关市| 满洲里市| 防城港市| 曲阜市| 印江| 福清市| 威信县| 德阳市| 曲周县| 祁阳县| 正镶白旗| 竹溪县| 织金县| 鸡泽县| 吴江市| 醴陵市| 元谋县| 林甸县| 长葛市| 从化市|