|
@@ -4,30 +4,95 @@ from .handler import handler
|
|
|
from .levels import levels
|
|
from .levels import levels
|
|
|
|
|
|
|
|
class logger:
|
|
class logger:
|
|
|
|
|
+ """
|
|
|
|
|
+ That class is responsible for managing log handlers, and generating
|
|
|
|
|
+ log message. That formats log messages by adding time, date and also
|
|
|
|
|
+ level of the message.
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
def __init__(self) -> None:
|
|
def __init__(self) -> None:
|
|
|
|
|
+ """
|
|
|
|
|
+ That initialize handlers set.
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
self.__handlers = set()
|
|
self.__handlers = set()
|
|
|
|
|
|
|
|
def _get_handlers(self) -> tuple:
|
|
def _get_handlers(self) -> tuple:
|
|
|
|
|
+ """
|
|
|
|
|
+ That returns copy of the handlers list.
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
return tuple(self.__handlers)
|
|
return tuple(self.__handlers)
|
|
|
|
|
|
|
|
- def _get_message(self, level: levels, *args, **kwargs) -> str:
|
|
|
|
|
- if len(args) < 1:
|
|
|
|
|
- raise RuntimeError("Message or message format is not specified.")
|
|
|
|
|
|
|
+ def _get_message(
|
|
|
|
|
+ self,
|
|
|
|
|
+ level: levels,
|
|
|
|
|
+ content: str,
|
|
|
|
|
+ *args,
|
|
|
|
|
+ **kwargs
|
|
|
|
|
+ ) -> str:
|
|
|
|
|
+ """
|
|
|
|
|
+ That try to format log message. It require level of the message and
|
|
|
|
|
+ also message itself. When it get only level and message itself, that
|
|
|
|
|
+ only add message to level and timestamp info. When more parameters
|
|
|
|
|
+ had been given that run format function on the first message. It is
|
|
|
|
|
+ useable when log message must contain for example IP address or
|
|
|
|
|
+ other things like that.
|
|
|
|
|
+
|
|
|
|
|
+ Parameters
|
|
|
|
|
+ ----------
|
|
|
|
|
+ level : levels
|
|
|
|
|
+ Log level of the message.
|
|
|
|
|
+
|
|
|
|
|
+ content : str
|
|
|
|
|
+ Content of the message to log.
|
|
|
|
|
+
|
|
|
|
|
+ *args, **kwargs
|
|
|
|
|
+ Optional arguments used when format would be used.
|
|
|
|
|
+
|
|
|
|
|
+ Returns
|
|
|
|
|
+ -------
|
|
|
|
|
+ str
|
|
|
|
|
+ Result message which would be saved in the logs.
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
|
|
+ if len(args) > 0 or len(kwargs) > 0:
|
|
|
|
|
+ content = content.format(*args, **kwargs)
|
|
|
|
|
|
|
|
return ( \
|
|
return ( \
|
|
|
self.__level_name(level) + " " + \
|
|
self.__level_name(level) + " " + \
|
|
|
self.time_stamp + " " + \
|
|
self.time_stamp + " " + \
|
|
|
- self.__formater(*args, **kwargs) \
|
|
|
|
|
|
|
+ content \
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
@property
|
|
@property
|
|
|
def time_stamp(self) -> str:
|
|
def time_stamp(self) -> str:
|
|
|
- now = time.localtime()
|
|
|
|
|
- formated = time.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
|
-
|
|
|
|
|
- return formated
|
|
|
|
|
|
|
+ """
|
|
|
|
|
+ That return current time as timestamp to use in log message.
|
|
|
|
|
+
|
|
|
|
|
+ Returns
|
|
|
|
|
+ -------
|
|
|
|
|
+ str
|
|
|
|
|
+ Current time as timestamp.
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
|
|
+ return time.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
|
|
|
|
def __level_name(self, level: levels) -> str:
|
|
def __level_name(self, level: levels) -> str:
|
|
|
|
|
+ """
|
|
|
|
|
+ That convert level enum value into level stamp.
|
|
|
|
|
+
|
|
|
|
|
+ Parameters
|
|
|
|
|
+ ----------
|
|
|
|
|
+ level : levels
|
|
|
|
|
+ Level enum to convert.
|
|
|
|
|
+
|
|
|
|
|
+ Returns
|
|
|
|
|
+ -------
|
|
|
|
|
+ str
|
|
|
|
|
+ Result as string stamp.
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
name = ""
|
|
name = ""
|
|
|
|
|
|
|
|
if level == levels.info:
|
|
if level == levels.info:
|
|
@@ -44,16 +109,16 @@ class logger:
|
|
|
|
|
|
|
|
return ("[" + name + "]")
|
|
return ("[" + name + "]")
|
|
|
|
|
|
|
|
- def __formater(self, *args, **kwargs) -> str:
|
|
|
|
|
- base = args[0]
|
|
|
|
|
- args = args[1:]
|
|
|
|
|
|
|
+ def use_handler(self, target: handler) -> None:
|
|
|
|
|
+ """
|
|
|
|
|
+ That add new handler to the handlers set.
|
|
|
|
|
|
|
|
- if len(args) == 0 and len(kwargs) == 0:
|
|
|
|
|
- return base
|
|
|
|
|
-
|
|
|
|
|
- return base.format(*args, **kwargs)
|
|
|
|
|
|
|
+ Parameters
|
|
|
|
|
+ ----------
|
|
|
|
|
+ target : handler
|
|
|
|
|
+ New handler to add.
|
|
|
|
|
+ """
|
|
|
|
|
|
|
|
- def use_handler(self, target: handler) -> None:
|
|
|
|
|
self.__handlers.add(target)
|
|
self.__handlers.add(target)
|
|
|
|
|
|
|
|
|
|
|