Spaces:
Sleeping
Sleeping
| import logging | |
| import sys | |
| import json | |
| from .config import settings | |
| class JsonFormatter(logging.Formatter): | |
| def format(self, record): | |
| log_obj = { | |
| "timestamp": self.formatTime(record, self.datefmt), | |
| "level": record.levelname, | |
| "message": record.getMessage(), | |
| "module": record.module, | |
| "line": record.lineno, | |
| } | |
| if record.exc_info: | |
| log_obj["exception"] = self.formatException(record.exc_info) | |
| return json.dumps(log_obj) | |
| def setup_logging(): | |
| logger = logging.getLogger("talenttalk") | |
| logger.setLevel(settings.LOG_LEVEL) | |
| console_handler = logging.StreamHandler(sys.stdout) | |
| if settings.ENVIRONMENT == "production": | |
| console_handler.setFormatter(JsonFormatter()) | |
| else: | |
| # Standard readable format for dev | |
| formatter = logging.Formatter( | |
| "%(asctime)s - %(name)s - %(levelname)s - %(message)s" | |
| ) | |
| console_handler.setFormatter(formatter) | |
| logger.addHandler(console_handler) | |
| # Also capture uvicorn logs if in prod | |
| if settings.ENVIRONMENT == "production": | |
| uvicorn_logger = logging.getLogger("uvicorn.access") | |
| uvicorn_logger.handlers = [console_handler] | |
| return logger | |
| logger = setup_logging() | |