logger.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import time
  2. from .handler import handler
  3. from .levels import levels
  4. class logger:
  5. def __init__(self) -> None:
  6. self.__handlers = set()
  7. def _get_handlers(self) -> tuple:
  8. return tuple(self.__handlers)
  9. def _get_message(self, level: levels, *args, **kwargs) -> str:
  10. if len(args) < 1:
  11. raise RuntimeError("Message or message format is not specified.")
  12. return ( \
  13. self.__level_name(level) + " " + \
  14. self.time_stamp + " " + \
  15. self.__formater(*args, **kwargs) \
  16. )
  17. @property
  18. def time_stamp(self) -> str:
  19. now = time.localtime()
  20. formated = time.strftime("%Y-%m-%d %H:%M:%S")
  21. return formated
  22. def __level_name(self, level: levels) -> str:
  23. name = ""
  24. if level == levels.info:
  25. name = "info"
  26. if level == levels.warning:
  27. name = "warning"
  28. if level == levels.error:
  29. name = "error"
  30. if level == levels.critical:
  31. name = "CRITICAL"
  32. return ("[" + name + "]")
  33. def __formater(self, *args, **kwargs) -> str:
  34. base = args[0]
  35. args = args[1:]
  36. if len(args) == 0 and len(kwargs) == 0:
  37. return base
  38. return base.format(*args, **kwargs)
  39. def use_handler(self, target: handler) -> None:
  40. self.__handlers.add(target)