""" Custom structured JSON logging for filter outputs. """ import json import logging import sys from datetime import datetime from typing import Any, Dict class JsonFormatter(logging.Formatter): def format(self, record: logging.LogRecord) -> str: log_obj: Dict[str, Any] = { "timestamp": datetime.utcnow().isoformat() + "Z", "level": record.levelname, "message": record.getMessage(), "module": record.module } if hasattr(record, 'metrics'): log_obj["metrics"] = record.metrics return json.dumps(log_obj) def get_structured_logger(name: str) -> logging.Logger: """Instantiates a logger that outputs JSON structured text.""" logger = logging.getLogger(name) logger.setLevel(logging.INFO) if not logger.handlers: handler = logging.StreamHandler(sys.stdout) handler.setFormatter(JsonFormatter()) logger.addHandler(handler) return logger