Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| import logging | |
| import os | |
| from typing import Final | |
| from colorama import Fore, Style, init as colorama_init | |
| __all__: Final[list[str]] = ["get_logger"] | |
| class _ColourFormatter(logging.Formatter): | |
| _COLOUR_FOR_LEVEL = { | |
| logging.DEBUG: Fore.CYAN, | |
| logging.INFO: Fore.GREEN, | |
| logging.WARNING: Fore.YELLOW, | |
| logging.ERROR: Fore.RED, | |
| logging.CRITICAL: Fore.MAGENTA, | |
| } | |
| def format(self, record: logging.LogRecord) -> str: # noqa: D401 | |
| colour = self._COLOUR_FOR_LEVEL.get(record.levelno, "") | |
| return f"{colour}{super().format(record)}{Style.RESET_ALL}" | |
| def get_logger(name: str | None = None, level: int | None = None) -> logging.Logger: | |
| """Return a configured logger instance.""" | |
| colorama_init() | |
| env_level = os.getenv("LOG_LEVEL", "INFO").upper() | |
| if level is None: | |
| level = getattr(logging, env_level, logging.INFO) | |
| handler = logging.StreamHandler() | |
| handler.setFormatter( | |
| _ColourFormatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s") | |
| ) | |
| logger = logging.getLogger(name) | |
| logger.setLevel(level) | |
| logger.handlers.clear() | |
| logger.addHandler(handler) | |
| return logger | |