Tre*_*ith 2 python logging instrumentation elasticsearch elasticsearch-py
我正在使用 python-elasticsearch 模块,我在python-elasticsearch 文档中curl读到,您可以将所有底层 HTTP 请求记录为命令行命令:
elasticsearch.trace 可用于使用漂亮打印的 json 以 curl 命令的形式将请求记录到服务器,然后可以从命令行执行。因为它被设计为共享(例如演示一个问题),所以它也只使用 localhost:9200 作为地址而不是主机的实际地址。如果尚未配置跟踪记录器,则将其设置为传播=假,因此需要单独激活。
对于 python-elasticsearch 模块,您如何启用此curl日志记录?
我试过:
logging.basicConfig(level=logging.DEBUG)但没有输出 curlelasticsearch.trace记录器并将该记录器的级别logging.DEBUG设置为然后设置es_trace_logger.propagate = True但这些都不起作用小智 6
我认为您可能缺少的一个关键步骤是向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)
Run Code Online (Sandbox Code Playgroud)
所以在这里我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",
Run Code Online (Sandbox Code Playgroud)
拥有这个记录器将记录我们所做的每个请求的整个请求和响应,因此有时这些日志可能会让人不知所措,但对于调试非常有用。
对于同一个请求,对应的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","_
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |