#bash #sh #apache-zookeeper
#bash #sh #apache-zookeeper
Вопрос:
Я пытаюсь получить файл, поддерживаемый zookeeper, используя zkcli.sh но каждый раз, когда на консоли выводится сообщение журнала подключения zookeeper, у нас нет привилегий изменять уровень журнала в zookeeper.
Например,
#!/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
Как подавить это сообщение журнала с консоли, а также скопировать file.txt
содержимое в file
переменную?
Комментарии:
1.
file=$(zkcli.sh -zkhost ${zkHost} -cmd get /filepath/file.txt 2>/dev/null)
2. Вы должны установить уровень ведения журнала из конфигурационного файла log4j, чтобы полностью подавить ведение журнала, а затем использовать
-Dlog4j.configuration=config
при запуске zkCli.sh
Ответ №1:
Хотя вы не можете полностью изолировать содержимое файла без некоторой обработки (из-за инструкций печати в 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
.