18 lines
567 B
Python
18 lines
567 B
Python
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))
|