2015-04-07 3 views
1

Я пытаюсь запустить локальный экземпляр Elasticsearch из Java, но он рассылает мне на консоль всевозможные сообщения. Это мой код, чтобы создать настройки и создать узел:Elasticsearch (Java) отключить ведение журнала

Settings settings = ImmutableSettings.settingsBuilder() 
      .put("cluster.name", "localcluster") 
      //Paths 
      .put("path.data", "ESConsole/data") 
      .put("path.logs", "ESConsole/logs") 
      .put("path.work", "ESConsole/work") 
      .put("path.plugins", "ESConsole/plugins") 
      .put("path.conf", "ESConsole/config") 
      //Make the node unreachable from the outside 
      .put("discovery.zen.ping.multicast.enabled", false) 
      .put("node.local", true) 
      .put("http.enabled", false) 
      .build(); 
this.node = NodeBuilder.nodeBuilder().settings(settings).node(); 

Я пытался создать logger.yml и log4j.properties файл и установить уровень протоколирования «ERROR» (в соответствии с this question), но казалось, не работает (если я не сделал что-то действительно не так). Есть ли простая настройка, которую я могу поместить в построитель настроек (желательно) или мне нужно создать файл настроек?

Причина, по которой я спрашиваю об этом, заключается в том, что все, что я мог найти, это люди, которые что-то говорили о файле конфигурации, в то время как я предпочитаю хранить все в коде. Если это невозможно, сообщите мне;)

Спасибо!

+0

То, что я сделал сейчас, это просто установить уровень log4j на «info», таким образом, по крайней мере, это намного меньше подробностей. Помимо этого, похоже, не было хорошего решения. –

ответ

3

То, что я в конечном итоге делает это:

Settings settings = settingsBuilder() 
      .put("http.enabled", false) 
      .put("network.host", "127.0.0.1") 
      .put("cluster.name", "my_cluster_name") 
      .put("node.name", "my_node_name") 
      .put("path.home", HOME.getAbsolutePath()) 
      .put("path.conf", CONFIG.getAbsolutePath()) 
      .put("path.logs", LOGS.getAbsolutePath()) 
      .build(); 

    // make sure ES' logging system knows where to find our custom logging.xml 
    LogConfigurator.configure(settings); 

    // startup a standalone node to use for tests 
    return nodeBuilder() 
      .settings(settings) 
      .local(true) 
      .loadConfigSettings(false) 
      .node(); 

Ключевым моментом здесь является LogConfigurator.configure() вызов. Обратите внимание, что мне пришлось скопировать файл logging.yml в каталог path.logs, который просто отключает консольный регистратор.

Я подозреваю, что в настройках включен logger.level = OFF, тогда вам не понадобится файл logging.yml, но тогда у вас будет нулевое ведение журнала (это может быть то, что вы хотите).

+0

Ищет решение этой проблемы, я также нашел, что это помогло: [https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/elasticsearch/Kxt45avq6TI/w5K0SHhkGIoJ](https: //groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/elasticsearch/Kxt45avq6TI/w5K0SHhkGIoJ) –

+0

Каково содержимое пользовательского 'logging.yml'? @KoenDeGroote, ссылка не работает. – Velkan

+0

@ Velkan Я закончил жестко кодировать его в код Java. Добавлено решение, которое я нашел до конца вопроса. –

Смежные вопросы