Implement logging levels

This commit is contained in:
George Lacey 2025-01-18 17:59:23 +00:00
parent 94d6ae4101
commit b013416e2f
3 changed files with 26 additions and 9 deletions

View File

@ -1,2 +1,6 @@
INFO=0
WARNING=5
ERROR=10
from .log import Log
from .logcat import LogCat

View File

@ -2,11 +2,13 @@ from datetime import datetime
from multiprocessing import Lock
from threading import Thread
from queue import Queue, Empty
from . import INFO, WARNING, ERROR
class Log(object):
def __init__(self, path, queue=None, print_output=True, timeout=1):
def __init__(self, path, queue=None, print_output=True, timeout=1, level=WARNING):
self.__terminated = False
self.level = level
self.file_lock = Lock()
if not path.exists():
@ -42,9 +44,10 @@ class Log(object):
while len(log_msg_list) < lines:
try:
log_line = self.queue.get(block=True, timeout=timeout)
if self.print:
print(log_line)
log_msg_list.append(f"{log_line.encode('cp1252', errors='replace').decode('cp1252')}\n")
level, message = log_line
if self.print and level >= self.level:
print(message)
log_msg_list.append(f"{message.encode('cp1252', errors='replace').decode('cp1252')}\n")
except Empty:
break
finally:

View File

@ -1,5 +1,6 @@
from datetime import datetime
from multiprocessing import Queue
from . import INFO, WARNING, ERROR
class LogCat(object):
@ -8,15 +9,24 @@ class LogCat(object):
self.category = category
def _write(self, level: str, function: str, message: str) -> None:
def _write(self, level: int, function: str, message: str) -> None:
time = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
self.queue.put(f"{level} | {time} - {self.category.upper()}.{function.upper()}: {message}")
self.queue.put((level, f"{self.level_string(level)} | {time} - {self.category.upper()}.{function.upper()}: {message}"))
def info(self, function: str, message: str) -> None:
self._write("INFO", function, message)
self._write(INFO, function, message)
def warning(self, function: str, message: str) -> None:
self._write("WARN", function, message)
self._write(WARNING, function, message)
def error(self, function: str, message: str) -> None:
self._write("ERR ", function, message)
self._write(ERROR, function, message)
@staticmethod
def level_string(level: int) -> str:
if level == INFO:
return "INFO"
elif level == WARNING:
return "WARN"
elif level == ERROR:
return "ERR "