Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 如何禁用HTTP响应调试?_Python_Logging_Python Requests_Werkzeug - Fatal编程技术网

Python 如何禁用HTTP响应调试?

Python 如何禁用HTTP响应调试?,python,logging,python-requests,werkzeug,Python,Logging,Python Requests,Werkzeug,我的python代码目前正在每次REST API调用结束时将以下行打印到日志中(关于它发送回的响应的高级信息): 通过其他搜索,我看到了以下关于如何摆脱它的建议: 1) logging.getLogger('werkzeug').setLevel(logging.ERROR) 2) logging.getLogger('werkzeug').disabled=True 3) 与上面相同,但是请求而不是werkzeug 这些都没有效果。提供的另一个解决方案是使用一个完全不同的流进行日志记录,但这不

我的python代码目前正在每次REST API调用结束时将以下行打印到日志中(关于它发送回的响应的高级信息):

通过其他搜索,我看到了以下关于如何摆脱它的建议:

1)
logging.getLogger('werkzeug').setLevel(logging.ERROR)

2)
logging.getLogger('werkzeug').disabled=True

3) 与上面相同,但是
请求
而不是
werkzeug

这些都没有效果。提供的另一个解决方案是使用一个完全不同的流进行日志记录,但这不适合我的需要


这显然是通过一种与我的其他日志不同的机制来记录的,因为格式不同,但我似乎无法确定罪魁祸首。

通常,您可以在任何库中找到该实例并调整日志记录级别

您可以通过以下方式访问该实用程序:

然后我将根记录器调整为(即
50

这意味着它将只打印
关键的
(或更高)输出

然后,您可以根据需要调整
\u记录器
级别

直接例子 通过在github页面中搜索
导入日志记录
命令,这适用于您的示例。这是我在werkzeug中找到的。_internal然后我们就可以做了

In [2]: from werkzeug.wrappers import Request, Response
   ...:
   ...: @Request.application
   ...: def application(request):
   ...:     return Response('Hello World!')
   ...:

In [3]: from werkzeug.serving import run_simple

In [4]: run_simple('localhost', 4000, application)
 * Running on http://localhost:4000/ (Press CTRL+C to quit)

In [5]: from werkzeug import _internal

In [6]: _internal._log('info', 'Setting logger level to Critical!')  # see below why this is required
Out[6]: 'Setting logger level to Critical!'

In [7]: _internal._logger.setLevel(50)

In [7]: run_simple('localhost', 4000, application)
如果
\u记录器为None
,则会发生这种情况,因为没有调用
Werkzeug
日志实例。有关更多信息,请参见内部

In [1]: from werkzeug import _internal

In [2]: type(_internal._logger)
Out[2]: NoneType

In [3]: _internal._log('info', 'removing logger!')
removing logger!

In [4]: type(_internal._logger)
Out[4]: logging.Logger

这是烧瓶吗?如何启动应用程序?可能是在调试模式下启动的。。也看看。这可能会有帮助。此外,请考虑将代码标记为代码,即使它是日志消息。在我看来,这有助于阅读您的问题。编辑到OP正在等待@rocksteady@rocksteady是的,这是烧瓶。已验证此日志语句在该级别启用调试模式和未启用调试模式的情况下都存在。(感谢您提供了关于标记为代码的提示——在我发布时忘记了这一点)。现在看起来很漂亮:)我想,OP描述了服务器端日志记录。但是,您的回答显示了一种修改客户端请求的方法,即请求模块,记录消息。因此,我尝试使用
requests.logging.getLogger().setLevel(logging.INFO)
,但我仍然看到HTTP响应调试行被打印出来。将调查根日志记录级别设置为DEBUG的可能性(不过,正如上面的评论中所提到的,我过去曾尝试过将该级别设置得更高,但没有效果).我看到你正在使用werkzeug
-我会的adjust@ChrisTwichell我将在一秒钟内删除
请求
引用。我刚刚直接添加了
Werkzeug
位,这样当我尝试访问
Werkzeug
时,您就可以直接使用它了。我得到以下异常:
AttributeError:'NoneType'对象没有属性“setLevel”
输入了
werkzeug
可能是基于其他SO搜索打印调试语句的内容,这些搜索显示了与我看到的格式完全相同的消息。
_logger.setLevel(50)
In [2]: from werkzeug.wrappers import Request, Response
   ...:
   ...: @Request.application
   ...: def application(request):
   ...:     return Response('Hello World!')
   ...:

In [3]: from werkzeug.serving import run_simple

In [4]: run_simple('localhost', 4000, application)
 * Running on http://localhost:4000/ (Press CTRL+C to quit)

In [5]: from werkzeug import _internal

In [6]: _internal._log('info', 'Setting logger level to Critical!')  # see below why this is required
Out[6]: 'Setting logger level to Critical!'

In [7]: _internal._logger.setLevel(50)

In [7]: run_simple('localhost', 4000, application)
In [1]: from werkzeug import _internal

In [2]: type(_internal._logger)
Out[2]: NoneType

In [3]: _internal._log('info', 'removing logger!')
removing logger!

In [4]: type(_internal._logger)
Out[4]: logging.Logger