|
|
@@ -1,42 +1,55 @@
|
|
|
+import time
|
|
|
+
|
|
|
from .handler import handler
|
|
|
+from .levels import levels
|
|
|
|
|
|
class logger:
|
|
|
def __init__(self) -> None:
|
|
|
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:
|
|
|
self.__handlers.add(target)
|
|
|
|