Python 如何自定义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

我正在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.
 * 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过滤消息的方法,更新了我的答案。