bmc_hub/app/services/system_event_logger.py

23 lines
1004 B
Python
Raw Normal View History

import json
import logging
from datetime import datetime
from typing import Any
from app.core.database import execute_query
logger = logging.getLogger(__name__)
def log_system_event(*, source: str, event_type: str, summary: str, status: str = "info",
correlation_id: str | None = None, user_id: int | None = None,
details: dict[str, Any] | None = None, occurred_at: datetime | None = None) -> None:
"""Best-effort operational event logging; logging must never break the source flow."""
try:
execute_query(
"""INSERT INTO system_event_log(source,event_type,status,summary,correlation_id,user_id,details,occurred_at)
VALUES(%s,%s,%s,%s,%s,%s,%s::jsonb,COALESCE(%s,NOW()))""",
(source,event_type,status,summary,correlation_id,user_id,json.dumps(details or {},default=str),occurred_at),
)
except Exception as exc:
logger.warning("Could not persist system event %s: %s", event_type, exc)