feat: add configurable logging toggle to settings and implement dynamic log level management

This commit is contained in:
Martin Tranberg
2026-04-01 10:19:21 +02:00
parent e14012d2a5
commit ad6055963d

View File

@@ -16,8 +16,16 @@ import logging
from ctypes import wintypes
# --- LOGGING & KONSTANTER ---
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def setup_logging(enabled=True):
level = logging.INFO if enabled else logging.CRITICAL
# Fjern eksisterende handlers hvis vi kalder den igen
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
logging.basicConfig(level=level, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger("SP_Browser")
# Initial setup (INFO) - vil blive opdateret efter settings er indlæst
setup_logging(True)
CHUNK_SIZE = 1 * 1024 * 1024 # 1MB
ENABLE_HASH_VALIDATION = True
@@ -48,6 +56,7 @@ def load_settings():
"language": "da", # da eller en
"favorites": [], # Liste over {id, name, type, drive_id, site_id, path}
"fav_visible": True,
"logging_enabled": True,
"license_key": ""
}
if not os.path.exists(SETTINGS_FILE):
@@ -72,6 +81,8 @@ AUTHORITY = f"https://login.microsoftonline.com/{TENANT_ID}"
SCOPES = ["Files.ReadWrite.All", "Sites.Read.All", "User.Read"]
TEMP_DIR = settings.get("temp_dir", "C:\\Temp_SP")
CURRENT_LANG = settings.get("language", "da")
# Opdater logging baseret på gemte indstillinger
setup_logging(settings.get("logging_enabled", True))
# --- TRANSLATIONS ---
STRINGS = {
@@ -165,7 +176,9 @@ STRINGS = {
"msg_fav_exists": "'{name}' er allerede i favoritter.",
"settings_license_group": "Licens / Aktivering",
"settings_license_key": "Licensnøgle:",
"settings_license_status": "Status: Ikke aktiveret"
"settings_license_status": "Status: Ikke aktiveret",
"settings_logging_group": "System / Diverse",
"settings_logging": "Aktiver log-output (anbefales til fejlfinding)"
},
"en": {
"title": "SharePoint Explorer",
@@ -257,7 +270,9 @@ STRINGS = {
"msg_fav_exists": "'{name}' is already in favorites.",
"settings_license_group": "License / Activation",
"settings_license_key": "License Key:",
"settings_license_status": "Status: Not activated"
"settings_license_status": "Status: Not activated",
"settings_logging_group": "System / Miscellaneous",
"settings_logging": "Enable log output (recommended for troubleshooting)"
}
}
@@ -467,6 +482,16 @@ class SettingsDialog(wx.Dialog):
inner_vbox.Add(lang_sizer, 0, wx.EXPAND | wx.ALL, 10)
# --- Group: Miscellaneous ---
misc_box = wx.StaticBox(panel, label=self.get_txt("settings_logging_group"))
misc_sizer = wx.StaticBoxSizer(misc_box, wx.VERTICAL)
self.logging_cb = wx.CheckBox(panel, label=self.get_txt("settings_logging"))
self.logging_cb.SetValue(self.settings.get("logging_enabled", True))
misc_sizer.Add(self.logging_cb, 0, wx.ALL, 10)
inner_vbox.Add(misc_sizer, 0, wx.EXPAND | wx.ALL, 10)
panel.SetSizer(inner_vbox)
inner_vbox.Fit(panel)
vbox.Add(panel, 1, wx.EXPAND | wx.ALL, 0)
@@ -496,6 +521,10 @@ class SettingsDialog(wx.Dialog):
self.settings["temp_dir"] = self.temp_dir_picker.GetPath()
self.settings["language"] = "da" if self.lang_choice.GetSelection() == 0 else "en"
self.settings["license_key"] = self.license_ctrl.GetValue().strip()
self.settings["logging_enabled"] = self.logging_cb.GetValue()
# Anvend logning med det samme
setup_logging(self.settings["logging_enabled"])
if not self.settings["client_id"] or not self.settings["tenant_id"]:
wx.MessageBox("Client ID og Tenant ID skal udfyldes.", "Fejl", wx.OK | wx.ICON_ERROR)