使用 elastic4s 和 logback 时启用 ElasticSearch RestClient 响应日志记录

Enabling ElasticSearch RestClient response logging when using elastic4s and logback

我正在使用 elastic4s v6.5.2 向 ElasticSearch 发送非常简单的 index/update 请求。
elastic4s 在后台使用 com.elasticsearch.client.RestClientseems to support response logging
我的目标是将这些日志合并到我的应用程序中(将它们写入 file/stdout)。

在我的项目中,据我所知,我正在使用 logback as the logging framework, whereas elasticsearch (and subsequently its RestClient) uses commons-logging

我试过:

我也尝试过不同的日志级别 - finetraceall

None 其中有帮助 - elasticsearch 的 logger.isDebugEnabled() 方法总是 returns false.
在内部,elasticsearch 的 RequestLogger 有一个 Jdk14Logger(来自 commons-logging)并调用它的 isDebugEnabled() 方法,而后者又有一个 java.util.logging.Logger 并调用它的 isLoggable(Level.FINE) 方法 returns false,因为它没有定义日志级别。

解决这个问题的关键是删除 commons-logging 依赖项,而是添加对 jcl-over-slf4j.
的依赖项 在 sbt 中,它看起来像这样:

libraryDependencies += "org.slf4j" % "jcl-over-slf4j" % "1.7.25"
excludeDependencies += "commons-logging" % "commons-logging"

在此之后,可以使用 logback 简单地配置记录器:

<logger name="org.elasticsearch.client" level="debug"/>