我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Zookeeper中怎么解决zookeeper.out文件输出位置问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Zookeeper中怎么解决zookeeper.out文件输出位置问题

本文小编为大家详细介绍“Zookeeper中怎么解决zookeeper.out文件输出位置问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Zookeeper中怎么解决zookeeper.out文件输出位置问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

使用过 Zookeeper 的小伙伴都知道,Zookeeper 中运行日志 zookeeper.out 文件的输出路径默认为启动脚本的当前路径,导致Zookeeper 集群启动失败想看日志时总是不记得输出日志在哪儿,不方便查看日志文件,所以需要修改日志输出位置及方式,方便查看日志。

具体操作如下:

注释:以下所用 $ZOOKEEPER_HOME 为 Zookeeper 的根目录

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

将 ZOO_LOG_DIR 设置成自定义路径,本次设置为 ${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 不需要创建,它会自己创建)。

这样在每次使用 zkSever.sh 的时候,都能将运行日志 zookeeper.out 输出到指定路径下,但这样配置有个问题,就是每次运行 Zookeeper 时,此日志都会被覆盖,而不是 append 到文件中,故每次运行结束后只会保存有本次运行日志,若单次运行时间很长也会导致日志文件也很大。

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

在之前的配置中,我们只是实现了保存本次Zookeeper运行日志在指定路径下,这次我们通过配置 $ZOOKEEPER_HOME/conf/log4j.properties 来使用 log4j 日志框架将 Zookeeper 每次的运行日志都保存到指定路径下。

修改其中的 zookeeper.root.logger、zookeeper.log.dir 这两个参数。

具体如下:

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

其中参数 zookeeper.root.logger 是设置日志优先级和打印方式,默认为控制台打印 CONSOLE,而在 zkServer.sh 中会启动后台命令,将控制台输出的日志输出重定向到 zookeeper.out 文件中。

修改后添加了滚动产生文件输出方式 ROLLINGFILE;通过参数 zookeeper.log.dir 设置日志文件 zookeeper.log 的存储路径,这里直接采用绝对路径,相对路径可能不识别;默认日志文件名为 zookeeper.log,其中所有参数都可以自定义修改。其余参数不再赘述。

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

这里为什么又要修改 zkEnv.sh 文件呢?

因为 zkEnv.sh 文件中也有 log 文件的输出位置及方式,所以我们要将其中的 ZOO_LOG4J_PROP 设置成与 log4j 配置文件中相同,避免参数覆盖。

具体如下:

# 修改前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 文件

完成以上配置就可以将日志文件按照自己想要的方式输出,唯一美中不足的是在你设定的目录中,仍会有 zookeeper.out 文件存在, 虽然它的 size=0,究其原因是因为 zkServer.sh 会使用 nohup 进行 Zookeeper 的启动,然而 nohup 必然会输出一个日志文件到你设置的目录中,所以修改 _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 文件

上述日志配置是以日志文件大小轮转的,如果想要按照天轮转,可以将 log4j.appender.ROLLINGFILE 修改为 DaliyRollingFileAppender。

通过参数 log4j.appender.ROLLINGFILE.MaxBackupIndex 设置最大日志数量,每个日志文件大小最大默认为 10MB,以此文件大小进行分割。

具体如下:

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

DailyRollingFileAppender特点是固定周期时间生成一个日志文件,比如,默认情况是每天生成一个文件。

这种日志可以方便根据时间来定位日志位置,使日志清晰易查。但是这种日志有个不好地方是,不能限制日志数量,MaxBackupIndex 属性和 MaxFileSize 在DailyRollingFileAppender 中是无效的,这个还是按照自己的需求来定!

当然还有其他一些参数:

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.loglog4j.appender.ROLLINGFILE.DataPattern='.'yyyy-MM-ddlog4j.appender.ROLLINGFILE.encoding=UTF-8## 是否启动追加模式,默认为true,false为覆盖log4j.appender.ROLLINGFILE.Append=false

补充

修改原始输出逻辑,不再将本次运行日志信息所有输出到 zookeeper.out 中,而是使用log4j框架输出到 zookeeper.log 中,便于管理。而 zookeeper.out 只用于输出标准错误。

具体如下所示:

注意:要想实现此处操作,上述 _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 &# 修改后: 将原始指令注释,设置新的输出逻辑,只将标准错误输出到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 &

这样就能保证历史运行日志都能输出到指定文件夹中,并且不会因为运行日志文件堆积造成负载点爆炸。

而标准错误都会输出到 zookeeper.out 文件中,和运行日志放置在同一文件夹中。

当需要查看脚本命令错误时,可以查看 zookeeper.out 文件,当需要查看程序错误时就查看 zookeeper.log 运行日志文件。

需要注意的是:每次启动 Zookeeper 时,都会覆盖 zookeeper.out 文件,所以要做重启处理时记得备份文件。

读到这里,这篇“Zookeeper中怎么解决zookeeper.out文件输出位置问题”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Zookeeper中怎么解决zookeeper.out文件输出位置问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Zookeeper中怎么解决zookeeper.out文件输出位置问题

本文小编为大家详细介绍“Zookeeper中怎么解决zookeeper.out文件输出位置问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Zookeeper中怎么解决zookeeper.out文件输出位置问题”文章能帮助大家解决疑惑,下
2023-07-05

Zookeeper中如何解决zookeeper.out文件输出位置问题

这篇文章主要介绍了Zookeeper中如何解决zookeeper.out文件输出位置问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-14

怎么解决php上传文件出错问题

这篇文章将为大家详细讲解有关怎么解决php上传文件出错问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php上传文件出错的解决办法:1、在php.ini配置文件中设置“post_max_size”的值;
2023-06-08

怎么解决php文件中文名乱码问题

这篇文章主要介绍了怎么解决php文件中文名乱码问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php文件中文名乱码的解决办法:1、在php文件的头部加入charset代码:
2023-06-22

windows更新文件缺失或出现问题怎么解决

如果在Windows更新过程中出现文件缺失或出现问题的情况,可以尝试以下解决方法:1. 运行系统文件检查工具:打开命令提示符(管理员权限)并输入sfc /scannow,然后按下回车键。这将扫描并修复系统中任何损坏或缺失的文件。2. 重启W
2023-09-12

怎么解决Linux系统中出现中文乱码问题

本篇内容介绍了“怎么解决Linux系统中出现中文乱码问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、CentOS系统访问 g.cn ,
2023-06-13

Java中properties文件编码问题怎么解决

本文小编为大家详细介绍“Java中properties文件编码问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中properties文件编码问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-06-29

怎么在CSS中解决flex-basis 文本溢出问题

怎么在CSS中解决flex-basis 文本溢出问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. flex 家族flex 里有很多的属性,我们经常用到的就是如下操作:.c
2023-06-08

怎么解决php不能上传中文文件问题

这篇文章主要介绍“怎么解决php不能上传中文文件问题”,在日常操作中,相信很多人在怎么解决php不能上传中文文件问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决php不能上传中文文件问题”的疑惑有所
2023-06-20

怎么解决springboot读取自定义配置文件时出现乱码问题

这篇文章主要介绍“怎么解决springboot读取自定义配置文件时出现乱码问题”,在日常操作中,相信很多人在怎么解决springboot读取自定义配置文件时出现乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
2023-06-25

java多线程写文件出现冲突问题怎么解决

在多线程写文件时,可能会出现冲突问题,可以通过以下几种方式解决:使用锁(Lock):在文件写入操作之前,先获取一个锁,其他线程需要等待锁释放后才能进行写入操作。使用同步块(synchronized):使用同步块来确保多线程写文件时的互斥性,
java多线程写文件出现冲突问题怎么解决
2024-02-29

C#中获取文件大小问题怎么解决

本篇内容主要讲解“C#中获取文件大小问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中获取文件大小问题怎么解决”吧!C# 获取文件大小直接贴代码吧 ///
2023-07-05

Vue不运行修改配置文件的问题怎么解决

这篇文章主要介绍“Vue不运行修改配置文件的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue不运行修改配置文件的问题怎么解决”文章能帮助大家解决问题。首先,需要明确的是,Vue框架的
2023-07-05

php上传中文文件无法上传问题怎么解决

php上传中文文件无法上传的解决办法:1、通过“iconv("GBK", "UTF-8", $content);”方法将中文字符编码转换一下;2、将文件重命名即可。
2023-05-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录