禁用Elasticsearch(Java)日志记录

3

我正在尝试从Java中运行本地的Elasticsearch实例,但它会在我的控制台上输出各种消息。这是我构建设置并创建节点的代码:

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”(按照这个问题),但似乎没有起作用(除非我做错了什么)。 是否有一个简单的设置可以放在设置生成器中(最好),或者我必须创建一个设置文件?
我之所以在这里问这个问题,是因为我找到的所有人都说了有关配置文件的内容,而我更喜欢将一切都保留在代码中。如果这不可能,请让我知道;)
谢谢!

我现在所做的只是将log4j级别设置为“info”,这样至少就不会那么冗长了。除此之外,似乎没有更好的解决方案。 - Luca_Scorpion
1个回答

4
我最终做的是这样的:
    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文件,但这样就没有任何日志记录了(这可能是您想要的)。

也在寻找解决此问题的方法,我发现这个也有帮助:https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/elasticsearch/Kxt45avq6TI/w5K0SHhkGIoJ - Koen De Groote
自定义 logging.yml 的内容是什么?@KoenDeGroote,链接已损坏。 - Velkan
@Velkan 我最终将其硬编码到Java代码中。我将找到的解决方案添加到了问题的末尾。 - Koen De Groote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接