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()

参考文献

flask python