简体   繁体   English

记录elastic4s客户端

[英]Logging elastic4s client

looking at this example 看这个例子

client.execute{search in "places"->"cities" query "paris" start 5 limit 10}

is there an option to hook logging to client.execute to log all operations made by the client (index, search etc') ? 是否有一个选项可以将日志记录挂接到client.execute来记录客户端进行的所有操作(索引,搜索等)?

I saw this answer but I do not want to do something like : 我看到了这个答案,但是我不想做这样的事情:

val req = search in "index" / "type" query "kate bush"
logger.debug(s"Search request ${req.show}")

I want the client to log all base on the logging level 我希望客户端根据日志记录级别记录所有日志

You can define your own ElasticClient, with overriding execute functionality 您可以定义自己的ElasticClient,并具有覆盖执行功能

object MyElasticClientFactory {
     def fromClient(client: Client): ElasticClient = new ElasticClient {
     def close(): Unit = client.close()
     def java: Client = client

     override def execute[T, R, Q](request: T)(implicit executable: Executable[T, R, Q]): Future[Q] = {
         // TODO your logging here
         super.execute(request)
     }

}

Take a look at TcpClient for reference https://github.com/sksamuel/elastic4s/blob/9a4074b6ff5616b648801352b4c3629cd0fc9020/elastic4s-tcp/src/main/scala/com/sksamuel/elastic4s/TcpClient.scala 看看TcpClient以供参考https://github.com/sksamuel/elastic4s/blob/9a4074b6ff5616b648801352b4c3629cd0fc9020/elastic4s-tcp/src/main/scala/com/sksamuel/elastic4s/TcpClient.scala

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM