from __future__ import annotations import json import logging import sys from datetime import datetime, timezone from typing import Any def setup_logging() -> logging.Logger: logger = logging.getLogger("photo_api") if logger.handlers: return logger logger.setLevel(logging.INFO) handler = logging.StreamHandler(sys.stdout) handler.setFormatter(logging.Formatter("%(message)s")) logger.addHandler(handler) return logger def log_json(logger: logging.Logger, *, event: str, **fields: Any) -> None: payload: dict[str, Any] = { "ts": datetime.now(timezone.utc).isoformat(), "event": event, **fields, } logger.info(json.dumps(payload, ensure_ascii=False, separators=(",", ":")))