Spaces:
Runtime error
Runtime error
File size: 1,227 Bytes
0e02b97 db26769 0e02b97 db26769 0e02b97 db26769 0e02b97 db26769 0e02b97 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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
|