Spaces:
Runtime error
Runtime error
| import logging | |
| import json | |
| from datetime import datetime | |
| class JSONFormatter(logging.Formatter): | |
| def format(self, record): | |
| log_data = { | |
| "timestamp": datetime.utcnow().isoformat() + "Z", | |
| "level": record.levelname, | |
| "message": record.getMessage(), | |
| "module": record.module | |
| } | |
| if hasattr(record, "custom_fields"): | |
| log_data.update(record.custom_fields) | |
| return json.dumps(log_data) | |
| def get_logger(name): | |
| logger = logging.getLogger(name) | |
| if not logger.handlers: | |
| handler = logging.StreamHandler() | |
| handler.setFormatter(JSONFormatter()) | |
| logger.addHandler(handler) | |
| logger.setLevel(logging.INFO) | |
| return logger | |
| def log_cache_event(logger, event_type: str, key: str, **kwargs): | |
| fields = {"event_type": event_type, "cache_key": key} | |
| fields.update(kwargs) | |
| logger.info(f"Cache {event_type} for key {key}", extra={"custom_fields": fields}) | |
| def log_latency(logger, operation: str, latency_ms: float, **kwargs): | |
| fields = {"operation": operation, "latency_ms": latency_ms} | |
| fields.update(kwargs) | |
| logger.info(f"Operation {operation} took {latency_ms:.2f}ms", extra={"custom_fields": fields}) | |