2017-08-15 78 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' - 我會調整 –