Python 如何禁用HTTP响应调试?
我的python代码目前正在每次REST API调用结束时将以下行打印到日志中(关于它发送回的响应的高级信息): 通过其他搜索,我看到了以下关于如何摆脱它的建议: 1)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 这些都没有效果。提供的另一个解决方案是使用一个完全不同的流进行日志记录,但这不
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