【问题标题】:Logging elastic4s client记录elastic4s客户端
【发布时间】:2017-04-03 22:31:03
【问题描述】:

看这个例子

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

是否有一个选项可以将日志记录挂接到 client.execute 以记录客户端所做的所有操作(索引、搜索等)?

我看到了answer,但我不想做类似的事情:

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

我希望客户端根据日志记录级别记录所有内容

【问题讨论】:

  • 如果您在日志配置中启用 DEBUG 级别,那么您将看到更多关于内部发生的事情的输出。
  • @Val 谢谢,它已启用但我没有看到任何 elastic4s 输出
  • 你是如何启用它的?
  • @Val 在我的构建 sbt 文件中 logLevel in run := Level.Debug
  • @Val 也尝试添加此import org.elasticsearch.common.logging.ESLoggerFactory ESLoggerFactory.getRootLogger.setLevel("debug") 但并没有真正帮助

标签: scala elasticsearch elastic4s


【解决方案1】:

您可以定义自己的 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)
     }

}

看看 TcpClient 供参考https://github.com/sksamuel/elastic4s/blob/9a4074b6ff5616b648801352b4c3629cd0fc9020/elastic4s-tcp/src/main/scala/com/sksamuel/elastic4s/TcpClient.scala

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 2012-06-30
    • 2016-05-22
    • 1970-01-01
    • 2013-11-11
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多