import time from .handler import handler from .levels import levels class logger: def __init__(self) -> None: self.__handlers = set() def _get_message(self, level: levels, *args, **kwargs) -> str: if len(args) < 1: raise RuntimeError("Message or message format is not specified.") return ( self.__level_name(level) + " " + \ self.time_stamp + " " + \ self.__formater(*args, **kwargs ) @property def time_stamp(self) -> str: now = time.localtime() formated = time.strftime("%Y-%m-$d %H:%M:%S") return formated def __level_name(self, level: levels) -> str: name = "" if level == levels.info: name = "info" if level == levels.warning: name = "warning" if level == levels.error: name = "error" if level == levels.critical: name = "CRITICAL" return ("[" + name + "]") def __formater(self, *args, **kwargs) -> str: base = args[0] args = args[1:] if len(args) == 0 and len(kwargs) == 0: return base return base.format(*args, **kwargs) def use_handler(self, target: handler) -> None: self.__handlers.add(target)