Files
crucible-agent-build-fastap…/src/monitor_service/logging.py

23 lines
750 B
Python

import json
import logging
from urllib.parse import urlsplit, urlunsplit
def redact_url(url: str) -> str:
parts = urlsplit(url)
host = parts.hostname or ""
if ":" in host and not host.startswith("["):
host = f"[{host}]"
if parts.port is not None:
host = f"{host}:{parts.port}"
return urlunsplit((parts.scheme, host, parts.path, "", ""))
def log_event(logger: logging.Logger, event: str, **fields: object) -> None:
safe = {key: redact_url(str(value)) if key == "url" else value for key, value in fields.items()}
logger.info(json.dumps({"event": event, **safe}, default=str, sort_keys=True))
def configure_logging(level: str) -> None:
logging.basicConfig(level=level.upper(), format="%(message)s")