Uro*_*nac 6 python logging werkzeug flask
我需要更改默认的 Flask/Werkzeug 调试输出。
我试过这个:
app = Flask(__name__)
app.config["TESTING"] = True
...
log = logging.getLogger("werkzeug")
log.disabled = True
Run Code Online (Sandbox Code Playgroud)
这正在发挥作用。输出被完全抑制,不再有如下行:
111.222.81.83 - - [26/Mar/2019 13:31:04] "POST /catchdata HTTP/1.1" 200 -
112.122.81.83 - - [26/Mar/2019 13:31:07] "POST /catchdata HTTP/1.1" 200 -
Run Code Online (Sandbox Code Playgroud)
哪个好!
然后,我添加了这行代码:
@app.route("/catchdata", methods=["POST"])
def catchdata():
app.logger.info("In Catch")
...
Run Code Online (Sandbox Code Playgroud)
这就是我所得到的:
--------------------------------------------------------------------------------
INFO in __init__ [/srv/www/wsgi/Flask/service_py3/app/srv/__init__.py:438]:
In Catch
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
INFO in __init__ [/srv/www/wsgi/Flask/service_py3/app/srv/__init__.py:438]:
In Catch
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
INFO in __init__ [/srv/www/wsgi/Flask/service_py3/app/srv/__init__.py:438]:
In Catch
--------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
如何更改默认格式以仅获取:
In Catch
In Catch
In Catch
Run Code Online (Sandbox Code Playgroud)
我不需要记录到文件。仅屏幕。谢谢你!
Flask 使用标准 Python 日志记录对象,其默认配置由 StreamHandler 和简单的 Formatter 组成。
如果需要自定义日志记录设置,Flask 日志记录文档引用了使用 Python 的示例logging.config.dictConfig,并建议在程序中尽快进行自定义设置:
当您想要为您的项目配置日志记录时,您应该在程序启动时尽快执行此操作。如果在
app.logger配置日志记录之前访问,它将添加一个默认处理程序。如果可能,请在创建应用程序对象之前配置日志记录。
如果您只想更改默认处理程序的输出格式,您可以简单地设置一个新的格式化程序,并使用所需的格式对其进行初始化:
import logging
from flask import Flask, logging as flog
app = Flask(__name__)
@app.route("/")
def random_name():
app.logger.info("default flask logging format")
flog.default_handler.setFormatter(logging.Formatter("%(message)s"))
app.logger.info("message-only custom format")
return "random value"
Run Code Online (Sandbox Code Playgroud)
产生以下输出
[2019-03-26 14:42:06,511] INFO in main: default flask logging format
message-only custom format
Run Code Online (Sandbox Code Playgroud)
编辑
事实证明,Flask 的日志记录设置在这次提交中发生了显着变化,似乎已在 1.0 版本中结束,引入了default_handler.
对于旧版本,您可以使用以下解决方案:
app.logger.handlers[0].setFormatter(logging.Formatter("%(message)s"))
Run Code Online (Sandbox Code Playgroud)
我想指出,这种方法使用handlers本机对象上未记录的属性Logger。虽然它没有被定义为私有的,但我仍然会谨慎地在生产代码中使用它。
此解决方案还依赖于 StreamHandler 作为第一个添加到记录器的处理程序。
无论如何,如我链接的 Flask 文档中所述,干净、专用的日志记录设置应该是首选方法。
| 归档时间: |
|
| 查看次数: |
12729 次 |
| 最近记录: |