我在我的Sping Boot 应用程序中使用ElasticSearch高级客户端Java API。我想记录使用高级客户端API构建的查询以用于调试目的。
我的问题是,在www.example.com文件中需要什么样的设置application.properties才能打开从应用程序构建的JSON查询?
我对www.example.com文件尝试了以下属性application.properties,但是,它不能打印使用各种查询构建器构建的JSON查询。
logging.level.org.elasticsearch.client=TRACE
logging.level.org.elasticsearch.client.sniffer=TRACE
logging.level.org.elasticsearch=TRACE
3条答案
按热度按时间2g32fytz1#
您可以简单地记录使用rest-high级别客户端构建的查询,在您的记录器中使用下面的代码。
您还可以控制要记录的查询类型以及在特定情况下要设置的级别类型(TRACE、INFO、DEBUG)。
用于获取和记录搜索JSON的代码
第一行用于创建搜索请求,第二行用于打印
search JSON
,注意searchRequest.source().toString())
用于获取搜索JSON字符串。让我知道,如果你遇到任何问题,我这样做的所有时间使用其余的高级客户端。
wa7juj8i2#
elasticsearch logging doc看起来太含糊了,但它提到了
tracer
:启用跟踪程序包的跟踪日志记录,以便打印出此类日志行。
如果深入研究es客户端代码,就会发现有一个名为
org.apache.http.util.EntityUtils.RequestLogger
的类,它将所有请求和响应的详细信息记录到名为tracer
的记录器中:在方法
logResponse
中,您可以看到它将调试信息记录到正常的包记录器中,将跟踪信息记录到tracer
记录器中。因此,显示请求和响应跟踪信息的正确方法是配置一个名为
tracer
的记录器,并为其启用TRACE
级别。以
logback.xml
为例:现在你可以在
logs/es-trace
文件中找到跟踪细节,它包含一个curl请求和一个json响应。如果您使用 Spring Boot ,则
tracer
记录器的TRACE
级别也可以在application.properties
中配置:kxxlusnw3#
Spring Data Elasticsearch有关于如何进行客户端日志记录的指南。
要查看实际发送到服务器和从服务器接收的内容,需要打开传输级别上的请求/响应日志记录,如下面的代码片段所示。
启用传输层日志记录
当分别通过RestClient和ReactiveRestClient获得时,上述内容适用于RestHighLevelClient和ReactiveElasticsearchClient。
https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.clients.logging