File size: 1,824 Bytes
54a235d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import sys
from src.utils.singleton import Singleton
class SysLogger:
def __init__(self, filename):
self.filename = filename
self.terminal = sys.stdout
self.log = open(self.filename, "w")
def clear(self):
self.log.close()
self.log = open(self.filename, "w")
def get(self):
self.terminal.flush()
self.log.flush()
with open(self.filename, "r") as f:
return f.read()
def write(self, message):
self.terminal.write(message)
self.log.write(message + "\n")
class Logger:
__metaclass__ = Singleton
def __init__(self, name: str = "default", safe_history: bool = False):
self._name = name
self._safe_history = safe_history
if self._safe_history:
self.sys_logger = SysLogger(f"{self._name}_logs.log")
def _log(self, message: str):
f_message = (f"{self._name}: " if self._name != "default" else "") + message
if self._safe_history:
self.sys_logger.write(f_message)
else:
print(f_message)
def clear_history(self):
if self._safe_history:
self.sys_logger.clear()
def get_history(self):
if self._safe_history:
return self.sys_logger.get()
return ""
def catch(self, message: str, error):
self._log(f"{message} Error: {error}")
raise error
def debug(self, message: str):
self._log(f"debug: {message}")
def info(self, message: str):
self._log(f"info: {message}")
def warn(self, message: str):
self._log(f"warn: {message}")
def error(self, message: str):
self._log(f"error: {message}")
def tmp_debug(self, message):
self._log(f"tmp_debug: {message}")
logger = Logger("default", True)
|