Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设置特定请求的日志级别。会话_Python_Python Requests - Fatal编程技术网

Python 设置特定请求的日志级别。会话

Python 设置特定请求的日志级别。会话,python,python-requests,Python,Python Requests,我可以按照通常的方式为来自请求包的所有内容设置日志级别: logging.getLogger('requests').setLevel(…) 但是我有一个requests.Session,它特别健谈,我想为来自该会话的请求分别设置日志级别。下面的代码示例显示了我想要做的事情(标记为XX的行) 您可以为请求和urllib3(由请求使用)设置修饰符,以便仅为特定功能提供所需的日志记录级别 这看起来像这样: 导入日志 导入请求 导入功能工具 logging.basicConfig()文件 reques

我可以按照通常的方式为来自请求包的所有内容设置日志级别:

logging.getLogger('requests').setLevel(…)

但是我有一个
requests.Session
,它特别健谈,我想为来自该会话的请求分别设置日志级别。下面的代码示例显示了我想要做的事情(标记为XX的行)


您可以为
请求
urllib3
(由请求使用)设置修饰符,以便仅为特定功能提供所需的日志记录级别

这看起来像这样:

导入日志
导入请求
导入功能工具
logging.basicConfig()文件
requests\u logger=logging.getLogger(“请求”)
requests\u logger\u level=requests\u logger.getEffectiveLevel()
urllib3_logger=logging.getLogger(“urllib3”)
urllib3_logger_level=请求_logger.getEffectiveLevel()
url='1〕https://pypi.org/pypi/requests/json'
def请求\u调试(f):
@functools.wrapps(f)
def func(*args,**kwargs):
尝试:
请求\u logger.setLevel(logging.DEBUG)
urllib3_logger.setLevel(logging.DEBUG)
返回f(*args,**kwargs)
最后:
请求\记录器.setLevel(请求\记录器\级别)
urllib3_logger.setLevel(urllib3_logger_level)
返回函数
@请求\u调试
def get_data():
r=请求。获取(url)
返回r.json()['info']['author']
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
a=获取数据()
印刷品(a)

您可以为
请求
urllib3
(由请求使用)设置装饰器,以便仅为特定功能提供所需的日志记录级别

这看起来像这样:

导入日志
导入请求
导入功能工具
logging.basicConfig()文件
requests\u logger=logging.getLogger(“请求”)
requests\u logger\u level=requests\u logger.getEffectiveLevel()
URLLB3logger=日志记录.getLogger(“urllib3”)
urllib3_logger_level=请求_logger.getEffectiveLevel()
url='1〕https://pypi.org/pypi/requests/json'
def请求\u调试(f):
@functools.wrapps(f)
def func(*args,**kwargs):
尝试:
请求\u logger.setLevel(logging.DEBUG)
urllib3_logger.setLevel(logging.DEBUG)
返回f(*args,**kwargs)
最后:
请求\记录器.setLevel(请求\记录器\级别)
urllib3_logger.setLevel(urllib3_logger_level)
返回函数
@请求\u调试
def get_data():
r=请求。获取(url)
返回r.json()['info']['author']
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
a=获取数据()
印刷品(a)

这是否回答了您的问题?看见也许获取所有现有日志记录者的列表会有所帮助。@mkrieger1它显然不能回答我的问题:在我文章的第一行中,我明确表示我知道如何禁用请求的日志记录。我只想在特定的会话中禁用它。我认为在会话中不可能做到这一点。也许如果你添加了一个日志,你会避免记录你不想要的请求?这是否回答了你的问题?看见也许获取所有现有日志记录者的列表会有所帮助。@mkrieger1它显然不能回答我的问题:在我文章的第一行中,我明确表示我知道如何禁用请求的日志记录。我只想在特定的会话中禁用它。我认为在会话中不可能做到这一点。也许如果您添加一个线程,您可以避免记录您不想要的请求?这种方法是有问题的,因为它不是线程安全的;在调用获取_数据的同时使用请求的其他线程可能会或可能不会显示其日志消息;在调用获取_数据的同时使用请求的其他线程可能显示也可能不显示其日志消息。
import requests
import logging

requests.get('https://example.com/').close()
# log output:
# 2020-04-13 19:01:44 [DEBUG] Starting new HTTPS connection (1): example.com:443
# 2020-04-13 19:01:44 [DEBUG] https://example.com:443 "GET / HTTP/1.1" 200 648


s = requests.Session()
s.logger.setLevel(logging.INFO) # XX this doesn't exist, but illustrates what I want to do
s.get('https://example.com/').close() # nothing should be logged