logger.py 1.3 KB

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