如何抑制Zookeeper日志并将zk响应仅复制到bash脚本中的变量

问题描述

我正在尝试使用zkcli.sh来获取由zookeeper维护的文件,但是每次在控制台上打印出zookeeper连接日志消息时,我们都没有特权来更改zookeeper中的日志级别。

例如,

self.presentationMode.wrappedValue.dismiss()

每执行一次,控制台上就会打印一条日志消息。

struct DetailView: View {

    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    @State var someData = ""

    var body: some View {
        TextField("Placeholder",text: $someData)
        Button(action: {
            saveData()
            self.presentationMode.wrappedValue.dismiss() 
        }) {
            Text("Save data and go back")
        }
    }
}

如何隐藏来自控制台的日志消息,以及如何将#!/bin/bash file=$(zkcli.sh -zkhost ${zkHost} -cmd get /filepath/file.txt) 内容复制到INFO - 2020-07-22 17:30:29.895; org.apache.solr.common.cloud.ConnectionManager; Waiting for client to connect to ZooKeeper INFO - 2020-07-22 17:30:29.915; org.apache.solr.common.cloud.ConnectionManager; zkClient has connected INFO - 2020-07-22 17:30:29.915; org.apache.solr.common.cloud.ConnectionManager; Client is connected to ZooKeeper 变量中?

解决方法

虽然你不能在没有一些处理的情况下完全隔离文件的内容(因为 ZooKeeperMain.java 中的打印语句像 System.out.println("Connecting to " + cl.getOption("server"));),但你可以使用环境变量显着减少冗长:

ZOO_LOG4J_PROP="ERROR,ROLLINGFILE" bin/zkCli.sh -cmd get /filepath/file.txt

在我的默认设置(版本 3.6.2)中,日志消息写入 logs/ 下的文件中。也可以使用 ZOO_LOG_DIR 配置目录。 还可以修改conf/log4j.properties进行更多微调。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...