我正在使用python-elasticsearch模块,我读过python-elasticsearch documentation that you can log all the underlying HTTP requests as command line curl
commands:
elasticsearch.trace可用于将请求记录到服务器中的 使用漂亮打印的json的curl命令的形式 从命令行执行。因为它是为共享而设计的(对于 演示问题的示例)它也只使用localhost:9200作为 地址,而不是主机的实际地址。如果有痕迹 记录器尚未配置,已设置为property = False,因此 需要单独激活。
对于python-elasticsearch模块,如何启用此curl
日志记录?
我尝试过:
logging.basicConfig(level=logging.DEBUG)
,但没有输出卷曲elasticsearch.trace
记录器并将该记录器的级别设置为logging.DEBUG
,然后设置es_trace_logger.propagate = True
,但两者均无效答案 0 :(得分: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","_