使用 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.RestClient
,seems to support response logging。
我的目标是将这些日志合并到我的应用程序中(将它们写入 file/stdout)。
在我的项目中,据我所知,我正在使用 logback
as the logging framework, whereas elasticsearch (and subsequently its RestClient
) uses commons-logging
。
我试过:
- 在我的 logback 配置中添加一个新的
<logger>
(包 name="org.elasticsearch.client
和特定 class name="org.elasticsearch.client.RestClient"
)
使用以下任一方法将 commons-logging.properties
文件添加到我的项目资源中:
.level=trace
org.elasticsearch.client.level=trace
org.elasticsearch.client.RestClient.level=trace
我也尝试过不同的日志级别 - fine
、trace
、all
。
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"/>
我正在使用 elastic4s
v6.5.2 向 ElasticSearch 发送非常简单的 index/update 请求。
elastic4s
在后台使用 com.elasticsearch.client.RestClient
,seems to support response logging。
我的目标是将这些日志合并到我的应用程序中(将它们写入 file/stdout)。
在我的项目中,据我所知,我正在使用 logback
as the logging framework, whereas elasticsearch (and subsequently its RestClient
) uses commons-logging
。
我试过:
- 在我的 logback 配置中添加一个新的
<logger>
(包name="org.elasticsearch.client
和特定 classname="org.elasticsearch.client.RestClient"
) 使用以下任一方法将
commons-logging.properties
文件添加到我的项目资源中:.level=trace
org.elasticsearch.client.level=trace
org.elasticsearch.client.RestClient.level=trace
我也尝试过不同的日志级别 - fine
、trace
、all
。
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"/>