import json import logging from urllib.parse import urlsplit, urlunsplit def redacted_url(url: str) -> str: parsed = urlsplit(url) host = parsed.hostname or "" if ":" in host and not host.startswith("["): host = f"[{host}]" if parsed.port: host = f"{host}:{parsed.port}" return urlunsplit((parsed.scheme, host, parsed.path, "REDACTED" if parsed.query else "", "")) def log_event(logger: logging.Logger, event: str, **fields: object) -> None: logger.info(json.dumps({"event": event, **fields}, default=str, sort_keys=True))