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

标签 elasticsearch logback apache-commons-logging elastic4s

我正在使用 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=traceorg.elasticsearch.client.level=traceorg.elasticsearch.client.RestClient.level=trace

  • 我还尝试了不同的日志级别-finetraceall

    这些帮助都没有,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/

    相关文章:

    spring - 更改应用程序上下文路径会导致使用不同的(未知的)日志记录配置

    java - 每次运行我的程序时创建一个新的日志文件

    java - Spring Data Elasticsearch 是否支持 Multi Search API?

    使用 SLF4J+Logback 的 OSGi 应用程序上的 java.lang.LinkageError

    java - SLF4J Logger 有时会清除控制台输出(不需要)

    log4j类型GenericObjectPool不带参数

    json - 如何使用 Powershell 遍历 JSON 属性

    elasticsearch - 正则表达式在elasticsearch?

    elasticsearch - 如何在Elasticsearch中定义IP数组?

    java - 如何从 Play 框架标准输出中消除异常堆栈跟踪