亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Zookeeper中如何解決zookeeper.out文件輸出位置問(wèn)題

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

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

具體操作如下:

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

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

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

具體如下:

# 修改前
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 不需要?jiǎng)?chuàng)建,它會(huì)自己創(chuàng)建)。

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

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

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

修改其中的 zookeeper.root.logger、zookeeper.log.dir 這兩個(gè)參數(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)先級(jí)和打印方式,默認(rèn)為控制臺(tái)打印 CONSOLE,而在 zkServer.sh 中會(huì)啟動(dòng)后臺(tái)命令,將控制臺(tái)輸出的日志輸出重定向到 zookeeper.out 文件中。

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

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

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

因?yàn)?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)行日志信息輸出方式,增加了滾動(dòng)輸出的方式,初始只有控制臺(tái)輸出
? ? ZOO_LOG4J_PROP="INFO,CONSOLE,ROLLINGFILE"
fi

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

完成以上配置就可以將日志文件按照自己想要的方式輸出,唯一美中不足的是在你設(shè)定的目錄中,仍會(huì)有 zookeeper.out 文件存在, 雖然它的 size=0,究其原因是因?yàn)?zkServer.sh 會(huì)使用 nohup 進(jìn)行 Zookeeper 的啟動(dòng),然而 nohup 必然會(huì)輸出一個(gè)日志文件到你設(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。

通過(guò)參數(shù) log4j.appender.ROLLINGFILE.MaxBackupIndex 設(shè)置最大日志數(shù)量,每個(gè)日志文件大小最大默認(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)是固定周期時(shí)間生成一個(gè)日志文件,比如,默認(rèn)情況是每天生成一個(gè)文件。

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

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

log4j.appender.ROLLINGFILE.File=zookeeper.log
## 按照什么頻率滾動(dòng)文件:yyyy-MM(每月)、yyyy-ww(每周)、yyyy-MM-dd(每天)、yyyy-MM-dd-a(每半天)、yyyy-MM-dd-HH(每小時(shí))、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
## 是否啟動(dòng)追加模式,默認(rèn)為true,false為覆蓋
log4j.appender.ROLLINGFILE.Append=false

補(bǔ)充

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

具體如下所示:

注意:要想實(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)錯(cuò)誤輸出到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)行日志都能輸出到指定文件夾中,并且不會(huì)因?yàn)檫\(yùn)行日志文件堆積造成負(fù)載點(diǎn)爆炸。

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

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

需要注意的是:每次啟動(dòng) Zookeeper 時(shí),都會(huì)覆蓋 zookeeper.out 文件,所以要做重啟處理時(shí)記得備份文件。

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    Jmeter跨線程組共享cookie過(guò)程圖解

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

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

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

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

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

    springBoot中的properties配置解析

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

    JSON反序列化Long變Integer或Double的問(wèn)題及解決

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

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

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

最新評(píng)論