2015-04-07 53 views
1

我试图从Java内部运行本地Elasticsearch实例,但它的垃圾邮件我的控制台与各种消息。这是我的代码来构建设置和创建节点: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文件和日志记录级别设置为“错误”(根据this question),但似乎没有工作(除非我做了错误的事情)。 是否有一个简单的设置,我可以在设置生成器(最好)或我必须创建一个设置文件?

的原因,我在这里问这个是因为所有我能找到的就是人们说了一些关于一个配置文件,而我宁愿保持代码的一切。如果这是不可能的,请让我知道了;)

谢谢!

+0

我现在已经做的是只设置log4j的级别为“信息”,这样,至少是少了很多繁琐。除此之外,似乎没有一个好的解决方案。 –

回答

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代码中。在问题结尾添加了我找到的解决方案。 –