瀏覽代碼

Sync and start working on logger.

Cixo Develop 3 周之前
父節點
當前提交
bdf3971b7c
共有 2 個文件被更改,包括 19 次插入74 次删除
  1. 11 74
      source/logger.py
  2. 8 0
      source/sync_logger.py

+ 11 - 74
source/logger.py

@@ -1,81 +1,18 @@
-import time
-import pathlib
-
-from .levels import levels
 from .handler import handler
 
-class logger(handler):
-    def __init__(self, log_file: pathlib.Path | None) -> None:
-        super().__init__(log_file)
-
-        self.__debug = False
-        self.__time_stamp_format = "%d-%m-%Y %H:%M:%S "
-
-        self.__minimum_stdout = levels.critical.value
-        self.__minimum_stderr = levels.warning.value
-        self.__minimum_file = levels.warning.value
-
-    async def info(self, *args, **kwargs) -> None:
-        await self.log(levels.info, *args, **kwargs)
-
-    async def warning(self, *args, **kwargs) -> None:
-        await self.log(levels.warning, *args, **kwargs)
-
-    async def error(self, *args, **kwargs) -> None:
-        await self.log(levels.error, *args, **kwargs)
-
-    async def critical(self, *args, **kwargs) -> None:
-        await self.log(levels.critical, *args, **kwargs)
-
-    async def log(self, level: levels, *args, **kwargs) -> None:
-        value = level.value
-        content = self.__generate(*args, **kwargs)
-
-        if value >= self.__minimum_stdout or self.debug:
-            await self._to_stdout(content)
-
-        if value >= self.__minimum_stderr or self.debug:
-            await self._to_stderr(content)
-
-        if value >= self.__minimum_file or self.debug:
-            await self._to_file(content)
-
-    def __generate(self, *args, **kwargs) -> str:
-        if len(kwargs) > 0:
-            return self.__generate_from_kwargs(*args, **kwargs)
-
-        if len(args) > 0:
-            return self.__generate_from_args(*args)
-        
-        raise RuntimeError("Can not log empty message.")
-
-    def __generate_from_kwargs(self, *args, **kwargs) -> str:
-        if len(args) != 1 or type(args[0]) is not str:
-            RuntimeError("Can not log with format, when format is not given.")
-        
-        return self.time_stamp + args[0].format(**kwargs)
-
-    def __generate_from_args(self, *args) -> str:
-        mapper = lambda count: count if type(count) is str else repr(count)
-        mapped = map(mapper, args)
-
-        return self.time_stamp + str(", ").join(mapped)
-
-    @property
-    def time_stamp(self) -> str:
-        return time.strftime(self.__time_stamp_format, time.localtime())
+class logger:
+    def __init__(self) -> None:
+        self.__handlers = set()
 
-    def set_time_stamp(self, target: str) -> None:
-            self.__time_stamp_format = target
+    def _on_all(self, content: str) -> None:
+        for handler in self.__handlers:
+            handler(content)
 
-    @property
-    def debug(self) -> bool:
-        return self.__debug
-    
-    def start_debugging() -> None:
-        self.__debug = True
+    async def _on_all_async(self, content: str) -> None:
+        for handler in self.__handlers:
+            await handler.add(content)
 
-    def stop_debugging() -> None:
-        self.__debug = False
+    def use_handler(self, target: handler) -> None:
+        self.__handlers.add(target)
 
 

+ 8 - 0
source/sync_logger.py

@@ -0,0 +1,8 @@
+import time
+import pathlib
+
+from .levels import levels
+from .handler import handler
+
+class sync_logger:
+    pass