Elasticsearch (Java) 禁用日志记录

Elasticsearch (Java) disable logging

我正尝试从 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"(根据 this question),但这似乎并没有工作(除非我做错了什么)。 是否有一个简单的设置我可以放入设置生成器(最好)或者我是否必须创建一个设置文件?

我在这里问这个问题的原因是因为我能找到的只是有人说了一些关于配置文件的事情,而我更愿意将所有内容都保存在代码中。如果那不可能,请告诉我 ;)

谢谢!

我最后做的是这样的:

    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 文件,但是您的日志记录为零(这可能是您想要的) .