スタンドアロン モードで実行されている Flask サーバーがあります (を使用app.run()
)。しかし、コンソールにメッセージを表示したくありません。
127.0.0.1 - - [15/Feb/2013 10:52:22] "GET /index.html HTTP/1.1" 200 -
...
詳細モードを無効にするにはどうすればよいですか?
Werkzeug ロガーのレベルを ERROR に設定できます。その場合、エラーのみがログに記録されます。
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
OSX、Python 2.7.5、Flask 0.10.0 でテストされた完全に機能する例を次に示します。
from flask import Flask
app = Flask(__name__)
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
WSGI サーバーを使用している場合は、ログを [なし] に設定してください。
gevent_server = gevent.pywsgi.WSGIServer(("0.0.0.0", 8080), app,log = None)
abort(...)
遅い答えですが、各コンソールメッセージ(エラー中に表示されるものを含む)を抑制する方法を見つけました。
import os
import logging
logging.getLogger('werkzeug').disabled = True
os.environ['WERKZEUG_RUN_MAIN'] = 'true'
これは基本的に、Slava VとTom Wojcikの回答を組み合わせたものです。
私はこれらの応答ログをすべての異なるソリューションで取り除こうとして絶対的な年齢を費やしましたが、結局のところ、Flask / Werkzeug ではなく、Gunicorn のアクセス ログが stderr にダンプされました...
解決策は、Gunicorn 構成ファイルに次のブロックを追加して、デフォルトのアクセス ログ ハンドラーを NullHandler に置き換えることでした。
logconfig_dict = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"console": {"class": "logging.StreamHandler", "level": "INFO"},
"null": {"class": "logging.NullHandler"},
},
"loggers": {
"gunicorn.error": {"level": "INFO", "propagate": False, "handlers": ["console"]},
"gunicorn.access": {"level": "INFO", "propagate": False, "handlers": ["null"]},
},
}
どういうわけか、を含む上記のオプションはどれも.disabled = True
うまくいきませんでした。
ただし、次の方法でうまくいきました。
logging.getLogger('werkzeug').setLevel(logging.CRITICAL)
Python 3.7.3 で 2021 年 11 月現在の最新バージョンを使用する場合:
pip3 list | grep -E "(connexion|Flask|Werkzeug)"
connexion2 2.10.0
Flask 2.0.2
Werkzeug 2.0.2