sp-hydra-veil-gui/gui/v2/actions/logging_setup.py
2026-06-13 16:19:11 -04:00

66 lines
1.8 KiB
Python
Executable file

import logging
import os
import sys
from core.errors.logger import logger as core_logger
def is_logging_enabled(config):
if config is None:
return False
return bool(config.get("logging", {}).get("gui_logging_enabled"))
def setup_gui_logging(gui_cache_home, gui_log_file, current_handlers):
os.makedirs(gui_cache_home, exist_ok=True)
formatter = logging.Formatter(
'%(asctime)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
file_handler = logging.FileHandler(gui_log_file)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler(sys.stdout)
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
root_logger = logging.getLogger()
root_logger.setLevel(logging.INFO)
root_logger.handlers = []
root_logger.addHandler(file_handler)
root_logger.addHandler(stream_handler)
for handler in current_handlers:
try:
core_logger.removeHandler(handler)
except Exception:
pass
core_logger.addHandler(file_handler)
core_logger.addHandler(stream_handler)
if not os.path.exists(gui_log_file) or os.path.getsize(gui_log_file) == 0:
logging.info("GUI logging system initialized")
return [file_handler, stream_handler]
def teardown_gui_logging(gui_log_file, current_handlers):
for handler in current_handlers:
try:
core_logger.removeHandler(handler)
except Exception:
pass
root_logger = logging.getLogger()
for handler in list(root_logger.handlers):
root_logger.removeHandler(handler)
try:
handler.close()
except Exception:
pass
if os.path.exists(gui_log_file):
os.remove(gui_log_file)