问题描述
我正在尝试使用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
进行更多微调。