ロギング¶
Gunicorn で FastAPI アプリを動かしてる時のログ出力設定。
Info
Rocky Linux 9 上で FastAPI アプリを動かす前提で。
Gunicorn のログ設定例¶
デプロイ で書いた gunicorn_config.py にログ設定を追記する。
logs フォルダにログを保存していく。アクセスログはデフォルトではタイムスタンプがつかないので、 post_worker_init 関数でカスタムしてる。
# gunicorn_config.py
import logging
import multiprocessing
from pathlib import Path
Path("logs").mkdir(exist_ok=True)
worker_class = "uvicorn_worker.UvicornWorker"
workers = multiprocessing.cpu_count() * 2 + 1
bind = "0.0.0.0:8000"
accesslog = "logs/access.log"
errorlog = "logs/error.log"
def post_worker_init(worker):
access_formatter = logging.Formatter(
"%(asctime)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S %z",
)
for logger_name in ("gunicorn.access", "uvicorn.access"):
logger = logging.getLogger(logger_name)
for handler in logger.handlers:
handler.setFormatter(access_formatter)