2017-08-15 41 views
2

我的Python代码当前打印以下行日志在每次REST API调用(它正在发回的响应高层次信息)的结论:如何禁用HTTP响应调试?

111.111.111.111 - - [15/Aug/2017:12:03:15 +0000] "POST /some_endpoint 
HTTP/1.1" 202 72 "-" "python-requests/2.2.1 CPython/3.4.3 Linux/3.13.0-83-generic" 

通过其他搜索我见过如何摆脱它的以下建议:

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

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

3)同上,但requests代替werkzeug

这些都没有效果。提供的另一个解决方案是使用完全不同的流进行记录,但这不会成为我需要的选项。

这显然是通过一个单独的机制,而不是我的其他日志记录,因为格式是不同的,但我似乎无法查明罪魁祸首。

+0

_internalline 75这瓶?你如何启动应用程序?也许你是在调试模式下启动它的。也看看[在此](https://stackoverflow.com/questions/23552231/cant-enable-debug-mode-in-flask)。它可能有帮助。 – rocksteady

+0

另外,请考虑将代码标记为代码,即使它是日志消息。在我看来,这有助于阅读你的问题。 – rocksteady

+1

编辑到OP is pending @rocksteady –

回答

1

在一般情况下,你可以找到任何库logging实例,并调整日志记录级别

您可以通过werkzeug._internal

from werkzeug._internal import _logger 

然后我调整根记录到logging.CRITICAL访问logging实用程序(其中是50

_logger.setLevel(50) 

这意味着Werkzeug将只打印CRITICAL(或更高版本)输出

,然后可以调整根据该_logger水平得到了您的需求

直接的例子

这适用于你的例子由Werkzeug github上搜索的import logging命令页。这是我在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) 

_logger is 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 
+0

我想,OP描述了服务器端日志记录。但是,您的答案显示了一种修改客户端请求的方法,即请求模块,记录消息。 – rocksteady

+0

所以我尝试使用'requests.logging.getLogger()。setLevel(logging.INFO)“,但我仍然看到打印出HTTP响应调试行。将调查根日志记录级别设置为DEBUG的可能性(虽然,如上面的评论中提到的,我曾尝试过这种设置较高而没有效果)。 –

+0

我看到你正在使用'werkzeug' - 我会调整 –