Включение регистрации ответов ElasticSearch RestClient при использованииastic4s и выходе из системы - PullRequest
0 голосов
/ 24 октября 2019

Я использую elastic4s v6.5.2 для отправки довольно простых запросов индекса / обновлений в ElasticSearch.
elastic4s использует com.elasticsearch.client.RestClient под капотом, который, кажется, поддерживаетРегистрация ответов .
Моя цель - включить эти журналы в мое приложение (записать их в файл / стандартный вывод).

В моем проекте я использую logback в качестве каркаса ведения журнала, в то время как эластичный поиск (а затем его 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.

Ничего из этого не помогло - метод эластичного поиска logger.isDebugEnabled() всегда возвращает false.
Внутренне, у RequestLogger эластичного поиска есть Jdk14Logger (из commons-logging) и вызывает его метод isDebugEnabled(), который, в свою очередь, имеет java.util.logging.Logger, и вызывает его метод isLoggable(Level.FINE), который возвращает false, поскольку для него не определен уровень ведения журнала.

1 Ответ

0 голосов
/ 29 октября 2019

Ключом к решению этой проблемы было удаление зависимости 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"/>
...