esandorfi's picture
Domain features first reorganisation
68f48a7
raw
history blame contribute delete
751 Bytes
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=(",", ":")))