ready
This commit is contained in:
parent
7b6228ee55
commit
81638f3452
59
setup_logger.py
Normal file
59
setup_logger.py
Normal file
@ -0,0 +1,59 @@
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
import traceback
|
||||
import zipfile
|
||||
from datetime import datetime
|
||||
from tkinter import messagebox
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from core import Core
|
||||
|
||||
|
||||
def handle_exception(exc_type, exc_value, exc_traceback):
|
||||
if issubclass(exc_type, KeyboardInterrupt) or issubclass(exc_type, SystemExit):
|
||||
sys.__excepthook__(exc_type, exc_value, exc_traceback)
|
||||
return
|
||||
logger.error("Unhandled exception:\n" + "".join(traceback.format_exception(exc_type, exc_value, exc_traceback)))
|
||||
|
||||
def handle_thread_exception(args):
|
||||
exc_type, exc_value, exc_traceback = args.exc_type, args.exc_value, args.exc_traceback
|
||||
if issubclass(exc_type, KeyboardInterrupt) or issubclass(exc_type, SystemExit):
|
||||
return
|
||||
logger.error("Unhandled exception in thread:\n" + "".join(traceback.format_exception(exc_type, exc_value, exc_traceback)))
|
||||
|
||||
|
||||
log_dir = Core.DIR / "logs"
|
||||
log_file = log_dir / "info.log"
|
||||
os.makedirs(log_dir, exist_ok=True)
|
||||
os.makedirs(Core.DIR / "cache", exist_ok=True)
|
||||
try:
|
||||
if os.path.exists(log_file):
|
||||
ftime = os.path.getmtime(log_file)
|
||||
index = 1
|
||||
while True:
|
||||
zip_path = log_dir / f"{datetime.fromtimestamp(ftime).strftime('%Y-%m-%d')}-{index}.zip"
|
||||
if not os.path.exists(zip_path):
|
||||
break
|
||||
index += 1
|
||||
with zipfile.ZipFile(zip_path, "w") as zipf:
|
||||
logs_files = glob.glob(f"{log_dir}/*.log")
|
||||
for file in logs_files:
|
||||
if os.path.exists(file):
|
||||
zipf.write(file, os.path.basename(file))
|
||||
os.remove(file)
|
||||
except PermissionError:
|
||||
messagebox.showerror(f"ezSyncer {Core.ver_str}",
|
||||
"Some files are locked...\nProgram cannot works in multiplies instances.")
|
||||
sys.exit(1)
|
||||
logger.remove()
|
||||
fmt = "<green>{elapsed} -- {time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level:<8}</level> | {extra[module]:^12} | {extra[prefix]:<12} | {message}"
|
||||
logger.add(sys.stdout, level="DEBUG", format=fmt, backtrace=True, diagnose=True)
|
||||
logger.add(log_file, level="INFO", format=fmt, backtrace=False, diagnose=False, rotation="25 MB")
|
||||
logger.add(log_dir / "debug.log", level="DEBUG", format=fmt, rotation="10 MB")
|
||||
logger.add(log_dir / "low_debug.log", level="DEBUG", rotation="10 MB")
|
||||
sys.excepthook = handle_exception
|
||||
threading.excepthook = handle_thread_exception
|
||||
logger.bind(module="LoggerSetup", prefix="init").success("Logger initialized.")
|
Loading…
x
Reference in New Issue
Block a user