我正在尝试从 Java 中运行本地 Elasticsearch 实例,但它用各种消息向我的控制台发送垃圾邮件。这是我build设置和创建节点的代码:
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 ),但这似乎没有用(除非我做错了什么)。 是否有一个简单的设置可以放入设置构建器(最好),或者我是否必须创建一个设置文件?
我在这里问这个问题的原因是因为我能找到的都是关于配置文件的人,而我更愿意将所有内容都保存在代码中。如果那不可能,请告诉我 ;)
谢谢!
最佳答案
我最后做的是这样的:
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
文件,但是您需要零日志记录(这可能是您想要的)。
关于java - Elasticsearch (Java) 禁用日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29492662/