调试模式

编辑

调试信息 解释说,来自 Elasticsearch.Net 和 NEST 的每个响应都包含一个 DebugInformation 属性,并且 ConnectionSettingsRequestConfiguration 上的属性可以分别控制在调试信息中包含哪些附加信息,用于所有请求或每个请求。

在开发过程中,启用最详细的调试信息可能很有用,有助于识别和排除问题,或者只是确保客户端的行为符合预期。ConnectionSettings 上的 EnableDebugMode 设置是一种方便的简写方式,用于启用详细的调试信息,配置许多设置,例如:

  • 禁用直接流式传输以捕获请求和响应字节
  • 美化来自 Elasticsearch 的 JSON 响应
  • 在发出请求时收集 TCP 统计信息
  • 在发出请求时收集线程池统计信息
  • 如果服务器端出现错误,则在响应中包含 Elasticsearch 堆栈跟踪
IConnectionPool pool = new SingleNodeConnectionPool(new Uri("https://127.0.0.1:9200"));

var settings = new ConnectionSettings(pool)
    .EnableDebugMode(); 

var client = new ElasticClient(settings);

var response = client.Search<Project>(s => s
    .Query(q => q
        .MatchAll()
    )
);

var debugInformation = response.DebugInformation; 

配置调试模式

详细调试信息

除了在响应中公开调试信息之外,调试模式还会导致调试信息默认写入 System.Diagnostics.Debug.Listeners 集合中的跟踪侦听器中(请求完成后)。在启用调试模式时,可以传递一个委托来执行不同的操作(请求完成后),使用 OnRequestCompleted

var pool = new SingleNodeConnectionPool(new Uri("https://127.0.0.1:9200"));
var client = new ElasticClient(new ConnectionSettings(pool)
    .EnableDebugMode(apiCallDetails =>
    {
        // do something with the call details e.g. send with logging framework
    })
);