我正在使用 elastic4s
v6.5.2向ElasticSearch发送非常简单的索引/更新请求。elastic4s
在引擎盖下使用com.elasticsearch.client.RestClient
,即seems to support response logging。
我的目标是将这些日志合并到我的应用程序中(将它们写入文件/ stdout)。
在我的项目中,据我所知,我将 logback
用作日志记录框架,而elasticsearch(以及随后的RestClient
)使用 commons-logging
。
我努力了:
<logger>
(用于name="org.elasticsearch.client
包和特定类name="org.elasticsearch.client.RestClient"
)commons-logging.properties
文件添加到我的项目的资源中:.level=trace
org.elasticsearch.client.level=trace
org.elasticsearch.client.RestClient.level=trace
我还尝试了不同的日志级别-
fine
,trace
,all
。这些帮助都没有,elasticsearch的
logger.isDebugEnabled()
方法始终不会返回false
。在内部,elasticsearch的
RequestLogger
具有Jdk14Logger
(来自commons-logging
)并调用其isDebugEnabled()
方法,该方法又具有java.util.logging.Logger
并调用其isLoggable(Level.FINE)
方法,该方法返回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"/>
关于elasticsearch - 使用elastic4s和logback时启用ElasticSearch RestClient响应日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58544365/