Files
crucible-agent-build-fastap…/app/logging.py

26 lines
795 B
Python

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