| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | import timefrom .handler import handlerfrom .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)
 |