Flaskベースのアプリの統合ログ
Flask には、Web アプリケーション関連のログに使用できる "app.logger" があり、Flask アプリケーションが使用する他のライブラリやパッケージには、通常、Python 標準のログが使用されます。Flask ベースのアプリケーションでは、さまざまなソースからのログが欠落したり、乱雑になったりすることがあるという問題が報告されています。問題の詳細については、下部の参照セクションを参照してください。回避策としては、グローバル ルート ログ構成を設定し、それを Flask からオーバーライドします。
import logging
from flask import Flask, jsonify
app = Flask(__name__)
# config global logging
fmt = logging.Formatter(
"[%(asctime)s] [%(process)d] [%(levelname)s] %(name)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S %z"
)
hlr = logging.StreamHandler()
hlr.setFormatter(fmt)
logging.getLogger().addHandler(hlr)
logging.getLogger().setLevel(logging.INFO)
app.logger.handlers = []
app.logger.propagate = True
@app.route("/")
def index():
return jsonify({
"message": "Hello, World!"
})
if __name__ == "__main__":
app.run()
参考文献
- How should logging in Flask look like?
- Design issue with flask.logger.create_logger().
- Global logging with flask