diff --git a/config.json b/config.json index bcbbdfc..dcd7b39 100644 --- a/config.json +++ b/config.json @@ -15,6 +15,7 @@ "shutdown": true }, "locations": { + "logs": "logs", "data": "data", "queue": "data/queue", "sent": "data/sent", diff --git a/modules/logging.py b/modules/logging.py index de4281e..43ec709 100644 --- a/modules/logging.py +++ b/modules/logging.py @@ -1,4 +1,48 @@ +import os +import gzip +import json +import shutil + +from datetime import datetime + +log_size = 512 + +with open("config.json", "r", encoding='utf8') as file: + log_folder = json.loads(file.read())["locations"]["logs"] + file.close() + +# Check latest log size +def checkSize(): + + global log_folder + + try: + os.makedirs(log_folder, exist_ok=True) + log = os.stat(os.path.join(log_folder, "latest.log")) + if (log.st_size / 1024) > log_size: + with open(os.path.join(log_folder, "latest.log"), 'rb') as f_in: + with gzip.open(os.path.join(log_folder, f'{datetime.now().strftime("%d.%m.%Y_%H:%M:%S")}.log.gz'), 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + print(f'Copied {os.path.join(log_folder, datetime.now().strftime("%d.%m.%Y_%H:%M:%S"))}.log.gz') + open(os.path.join(log_folder, "latest.log"), 'w').close() + except FileNotFoundError: + print('Not found') + pass + +# Append string to log +def logAppend(message): + + global log_folder + + message_formatted = f'[{datetime.now().strftime("%d.%m.%Y")}] [{datetime.now().strftime("%H:%M:%S")}] {message}' + checkSize() + + log = open(os.path.join(log_folder, "latest.log"), 'a') + log.write(f'{message_formatted}\n') + log.close() + +# Print to stdout and then to log def logWrite(message): # save to log file and rotation is to be done - # logAppend(f"[{nowtime()}] {message}", flush=True) + logAppend(f'[{datetime.now().strftime("%d.%m.%Y")}] [{datetime.now().strftime("%H:%M:%S")}] {message}', flush=True) print(f"{message}", flush=True) \ No newline at end of file