| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import pathlib
- import time
- from .file_handler import file_handler
- class log_directory:
- def __init__(self, target: pathlib.Path | None = None) -> None:
- if target is None:
- target = pathlib.Path("./logs")
- if not target.is_dir():
- target.mkdir()
- self.__root = target
- @staticmethod
- def _ends_with(name: str, ending: str) -> bool:
- return name[-len(ending):] == ending
- @property
- def root(self) -> pathlib.Path:
- return self.__root
- @property
- def logs(self) -> tuple:
- return tuple(self.iter_logs())
- def iter_logs(self) -> pathlib.Path:
- for count in self.__root.iterdir():
- if self._ends_with(count.name, ".log"):
- yield self.__root / count
- def get_logs_for_day(self, name: str | None = None) -> tuple:
- if name is None:
- name = self._base_name
- logs = self.iter_logs()
- filtered = filter(lambda count: str(count).find(name) != -1, logs)
- return tuple(filtered)
- @property
- def _base_name(self) -> str:
- return time.strftime("%Y-%m-%d", time.localtime())
-
- def get_new_file(self) -> pathlib.Path:
- base_name = self._base_name
- name_logs = self.get_logs_for_day(base_name)
- name_count = len(name_logs)
- while True:
- result_name = (
- base_name + "-" + \
- str(name_count + 1) + ".log" \
- )
- result_path = self.root / pathlib.Path(result_name)
- if not result_path.exists():
- return result_path
-
- name_count = name_count + 1
- def get_new_handler(self) -> file_handler:
- return file_handler(self.get_new_file())
|