如何设置elasticsearch库的日志级别,使之不同于我自己的日志级别?为了说明这个问题,我描述了一个模块场景。我有一个模块lookup.py
,它使用elasticsearch
如下:
import logging
logger = logging.getLogger(__name__)
import elasticsearch
def get_docs():
logger.debug("search elastic")
es = elasticsearch.Elasticsearch('http://my-es-server:9200/')
res = es.search(index='myindex', body='myquery')
logger.debug("elastic returns %s hits" % res['hits']['total'])
.
.
.
然后在我的主文件中
import logging
import lookup.py
logging.root.setLevel(loglevel(args))
get_docs()
.
.
.
我从Elasticsearch对象 * 内部 * 得到了很多调试消息。我如何用lookup.py
中的一些代码来抑制它们而不抑制lookup.py
本身的调试消息?Elasticsearch
类似乎有一个logger
对象;我尝试将其设置为None
,但这没有改变任何东西。
4条答案
按热度按时间w8f9ii691#
下面的两行代码为我提供了抑制来自es库的过多日志记录的技巧。
es_logger = logging.getLogger('elasticsearch') es_logger.setLevel(logging.WARNING)
2sbarzqh2#
我一直在用这个:
pexxcrt23#
作为补充回答,如果您的项目中有多个记录器,您可以这样做:
优点:
缺点:
goqiplq24#
在elasticsearch的最新版本(v8.5)中,聊天POST日志似乎已经转移到了elastic_transport:
logging.getLogger('elastic_transport.transport').setLevel(logging.CRITICAL)