|  | @@ -1,42 +1,55 @@
 | 
											
												
													
														|  | 
 |  | +import time
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  from .handler import handler
 |  |  from .handler import handler
 | 
											
												
													
														|  | 
 |  | +from .levels import levels 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  class logger:
 |  |  class logger:
 | 
											
												
													
														|  |      def __init__(self) -> None:
 |  |      def __init__(self) -> None:
 | 
											
												
													
														|  |          self.__handlers = set()
 |  |          self.__handlers = set()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    def _get_message(self, *args, **kwargs) -> str:
 |  | 
 | 
											
												
													
														|  | -        if len(kwargs) == 0:
 |  | 
 | 
											
												
													
														|  | -            return self.__get_message_from_args(self, *args)
 |  | 
 | 
											
												
													
														|  | 
 |  | +    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
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        if len(args) != 1:
 |  | 
 | 
											
												
													
														|  | -            raise RuntimeError("You must specify output format.")
 |  | 
 | 
											
												
													
														|  | 
 |  | +    def __level_name(self, level: levels) -> str:
 | 
											
												
													
														|  | 
 |  | +        name = ""
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        return self.__get_message_from_kwargs(self, args[0], **kwargs)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if level == levels.info:
 | 
											
												
													
														|  | 
 |  | +            name = "info"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    def __get_message_from_args(self, *args) -> str:
 |  | 
 | 
											
												
													
														|  | -        line = ""
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if level == levels.warning:
 | 
											
												
													
														|  | 
 |  | +            name = "warning"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        for count in args:
 |  | 
 | 
											
												
													
														|  | -            typed = type(count)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if level == levels.error:
 | 
											
												
													
														|  | 
 |  | +            name = "error"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            if typed is str:
 |  | 
 | 
											
												
													
														|  | -                line = line + count + " "
 |  | 
 | 
											
												
													
														|  | -                continue
 |  | 
 | 
											
												
													
														|  | -            
 |  | 
 | 
											
												
													
														|  | -            if typed is int or typed is float or typed is bool:
 |  | 
 | 
											
												
													
														|  | -                line = line + str(count) + " "
 |  | 
 | 
											
												
													
														|  | -                continue
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if level == levels.critical:
 | 
											
												
													
														|  | 
 |  | +            name = "CRITICAL"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            line = line + repr(count) + " "
 |  | 
 | 
											
												
													
														|  | 
 |  | +        return ("[" + name + "]")
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        if len(args) > 0:
 |  | 
 | 
											
												
													
														|  | -            line = line[0:-1]
 |  | 
 | 
											
												
													
														|  | 
 |  | +    def __formater(self, *args, **kwargs) -> str:
 | 
											
												
													
														|  | 
 |  | +        base = args[0]
 | 
											
												
													
														|  | 
 |  | +        args = args[1:]
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        return line
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if len(args) == 0 and len(kwargs) == 0:
 | 
											
												
													
														|  | 
 |  | +            return base
 | 
											
												
													
														|  | 
 |  | +        
 | 
											
												
													
														|  | 
 |  | +        return base.format(*args, **kwargs)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    def __get_message_from_kwargs(self, formation: str, **kwargs) -> str:
 |  | 
 | 
											
												
													
														|  | -        return formation.format(**kwargs)   
 |  | 
 | 
											
												
													
														|  | -    
 |  | 
 | 
											
												
													
														|  |      def use_handler(self, target: handler) -> None:
 |  |      def use_handler(self, target: handler) -> None:
 | 
											
												
													
														|  |          self.__handlers.add(target)
 |  |          self.__handlers.add(target)
 | 
											
												
													
														|  |  
 |  |  
 |