我的python代码当前在每个REST API调用结束时将以下行打印到日志中(它发回的响应的高级信息):
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 :(得分:1)
通常,您可以在任何库中找到logging
实例并调整日志记录级别
您可以通过logging
werkzeug._internal
实用程序
from werkzeug._internal import _logger
然后我将根记录器调整为logging.CRITICAL
(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
日志记录实例。有关更清晰的信息,请参阅_internal
中的line 75
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