python-asticsearch: как включить запись локон?

Я использую модуль python-asticsearch, я прочитал в документации по python-asticsearch, что вы можете регистрировать все базовые HTTP-запросы в виде командной строки curl команды:

asticsearch.trace может использоваться для регистрации запросов к серверу в форме команд curl с использованием симпатичного печатного json, который затем может быть выполнен из командной строки. Поскольку он предназначен для совместного использования (например, для демонстрации проблемы), он также просто использует localhost:9200 в качестве адреса вместо фактического адреса хоста. Если регистратор трассировки еще не настроен, он настроен на распространение =False, поэтому его необходимо активировать отдельно.

Как включить этот модуль для модуля python-asticsearch curl протоколирование?

Я старался:

  • установка глобального регистратора в logging.basicConfig(level=logging.DEBUG) но это не вывело локон
  • Я пытался получить elasticsearch.trace регистратор и установка уровня этого регистратора в logging.DEBUG а затем настройка es_trace_logger.propagate = True но ни один из них не работал

1 ответ

Я думаю, что одним из важных шагов, который вы можете пропустить, является добавление обработчика в elasticsearch.trace регистратор.

import logging
es_trace_logger = logging.getLogger('elasticsearch.trace')
es_trace_logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
es_trace_logger.addHandler(handler)

Итак, здесь я добавил StreamHandler в журнал, так что все журналы будут идти в stdout, При необходимости вы можете добавить другой обработчик в соответствии с вашим вариантом использования, например FileHandler например.

Вот пример журнала отладки для того же самого -

curl -XGET 'http://localhost:9200/my_index/_search?pretty' -d '{
  "size": 100
}'
#[200] (1.311s)
#{
#  "_shards": {
#    "failed": 0,
#    "successful": 6,
#    "total": 6
#  },
#  "hits": {
#    "hits": [
#      {
#        "_id": "FLKSD0SDFJJSDF7D518319DE5EEBB5d5b07044",

Наличие этого регистратора будет регистрировать весь запрос и ответ для каждого запроса, который мы делаем, поэтому иногда эти журналы могут быть чрезмерными, но довольно хороши для отладки.

Для того же запроса, соответствующий elasticsearch регистратор выдаст что-то вроде этого -

GET http://my_es_host:9200/my_index/_search [status:200 request:1.528s]
> {"size": 100}
< {"took":21,"timed_out":false,"_shards":{"total":6,"successful":6,"failed":0},"hits":{"total":112,"max_score":1.0,"hits":[{"_index":"my_index","_
Другие вопросы по тегам