Python 如何自定义Flask的启动消息?
我正在Cloud9中运行Flask应用程序。每当我启动Flask应用程序时,它都会显示以下消息:Python 如何自定义Flask的启动消息?,python,flask,Python,Flask,我正在Cloud9中运行Flask应用程序。每当我启动Flask应用程序时,它都会显示以下消息: * Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debu
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
有没有办法更改此消息?我想这样说:
Connect to me at http://0.0.0.0:80/!
我搜索了stack overflow和web,但没有找到任何内容。我正在使用app.run()
启动我的应用程序此外,是否可以将URL设置为青色?除了在上运行
之外,您还可以更改所有内容http://0.0.0.0:80/ (按CTRL+C退出)
通过更改flask.cli的show\u server\u banner
:
from flask import Flask
import sys
cli = sys.modules['flask.cli']
# put your own message here
cli.show_server_banner = lambda *x: click.echo("My nice message")
app = Flask(__name__)
app.run(host='0.0.0.0', port='80')
要摆脱在上运行的http://0.0.0.0:80/ …
消息,您可以使用unittest.mock
:
from unittest import mock
from werkzeug._internal import _log
def my_startup_log(*args):
# log all messages except for the * Running on message
if not args[1].startswith(" * Running on"):
return _log(*args)
app = Flask(__name__)
with mock.patch('werkzeug.serving._log') as mocked:
# patch the logger object and replace with own logger
mocked.side_effect = my_startup_logger
app.run(host='0.0.0.0', port='8000')
这是非常困难的,并且取决于flask的内部实现。在生产代码中使用时要小心,因为这很容易损坏。消息级别-您应该能够更改打印内容的级别(werkzeug
记录器),然后输出您自己的消息。@MatsLindh您的意思是我修改源代码还是我更改了其他内容?很好!为什么你不能改变它?因为它存在于werkzeug.service
中,并且在run\u simple
的内部函数中定义。我不知道是否有可能更改内部函数。是否有可能使所有都在http://0.0.0.0:80/ (按CTRL+C退出)
以不同的颜色?您可能会模拟werkzeug.serving
中的\u日志
调用。但这将导致app.run
的所有日志消息消失。这是需要的吗?我找到了一种使用unittest.mock过滤消息的方法,更新了我的答案。