diff --git a/app/logging.py b/app/logging.py new file mode 100644 index 0000000..281109b --- /dev/null +++ b/app/logging.py @@ -0,0 +1,25 @@ +import json +import logging +from datetime import UTC, datetime +from typing import Any + + +class JsonFormatter(logging.Formatter): + def format(self, record: logging.LogRecord) -> str: + payload: dict[str, Any] = { + "timestamp": datetime.now(UTC).isoformat(), + "level": record.levelname, + "message": record.getMessage(), + } + event_data = getattr(record, "event_data", None) + if isinstance(event_data, dict): + payload.update(event_data) + return json.dumps(payload, default=str, separators=(",", ":")) + + +def configure_logging(level: str) -> None: + handler = logging.StreamHandler() + handler.setFormatter(JsonFormatter()) + root = logging.getLogger() + root.handlers = [handler] + root.setLevel(level.upper())