import logging import sys from app.config import config class Log: _instance: "Log" = None def __new__(cls) -> "Log": if cls._instance is None: cls._instance = super().__new__(cls) cls._instance._configure() return cls._instance def _configure(self) -> None: self._logger = logging.getLogger("camoufox_api") self._logger.setLevel(getattr(logging, config.LOG_LEVEL.upper(), logging.INFO)) if not self._logger.handlers: handler = logging.StreamHandler(sys.stdout) handler.setLevel(self._logger.level) formatter = logging.Formatter( "%(asctime)s | %(levelname)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) handler.setFormatter(formatter) self._logger.addHandler(handler) @property def logger(self) -> logging.Logger: return self._logger log = Log()