log.py 953 B

12345678910111213141516171819202122232425262728293031323334
  1. import logging
  2. import sys
  3. from app.config import config
  4. class Log:
  5. _instance: "Log" = None
  6. def __new__(cls) -> "Log":
  7. if cls._instance is None:
  8. cls._instance = super().__new__(cls)
  9. cls._instance._configure()
  10. return cls._instance
  11. def _configure(self) -> None:
  12. self._logger = logging.getLogger("camoufox_api")
  13. self._logger.setLevel(getattr(logging, config.LOG_LEVEL.upper(), logging.INFO))
  14. if not self._logger.handlers:
  15. handler = logging.StreamHandler(sys.stdout)
  16. handler.setLevel(self._logger.level)
  17. formatter = logging.Formatter(
  18. "%(asctime)s | %(levelname)s | %(message)s",
  19. datefmt="%Y-%m-%d %H:%M:%S",
  20. )
  21. handler.setFormatter(formatter)
  22. self._logger.addHandler(handler)
  23. @property
  24. def logger(self) -> logging.Logger:
  25. return self._logger
  26. log = Log()