23 lines
1004 B
Python
23 lines
1004 B
Python
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)
|