import logging import json import sys from datetime import datetime class JSONFormatter(logging.Formatter): def format(self, record): log_obj = { "timestamp": datetime.utcnow().isoformat() + "Z", "level": record.levelname, "logger": record.name, "message": record.getMessage(), } if record.exc_info: log_obj["exception"] = self.formatException(record.exc_info) return json.dumps(log_obj) def get_logger(name: str) -> logging.Logger: logger = logging.getLogger(name) if not logger.handlers: logger.setLevel(logging.INFO) handler = logging.StreamHandler(sys.stdout) handler.setFormatter(JSONFormatter()) logger.addHandler(handler) return logger