Spaces:
Running
Running
| import json | |
| import logging | |
| import sys | |
| from datetime import datetime, timezone | |
| class JSONFormatter(logging.Formatter): | |
| def format(self, record): | |
| log_data = { | |
| "timestamp": datetime.now(timezone.utc).isoformat(), | |
| "level": record.levelname, | |
| "logger": record.name, | |
| "message": record.getMessage(), | |
| } | |
| if hasattr(record, "request_id"): | |
| log_data["request_id"] = record.request_id | |
| if record.exc_info and record.exc_info[0]: | |
| log_data["exception"] = self.formatException(record.exc_info) | |
| return json.dumps(log_data) | |
| def setup_logging(log_level="INFO", log_format="json"): | |
| root_logger = logging.getLogger() | |
| root_logger.setLevel(getattr(logging, log_level.upper(), logging.INFO)) | |
| handler = logging.StreamHandler(sys.stdout) | |
| if log_format == "json": | |
| handler.setFormatter(JSONFormatter()) | |
| else: | |
| handler.setFormatter(logging.Formatter( | |
| "%(asctime)s [%(levelname)s] %(name)s: %(message)s" | |
| )) | |
| root_logger.handlers.clear() | |
| root_logger.addHandler(handler) | |
| # Reduce noisy libraries | |
| logging.getLogger("werkzeug").setLevel(logging.WARNING) | |
| logging.getLogger("easyocr").setLevel(logging.WARNING) | |