""" Logger-Konfiguration für die Social Media Account Generator Anwendung. """ import os import logging import sys from PyQt5.QtWidgets import QTextEdit from PyQt5.QtGui import QTextCursor class LogHandler(logging.Handler): """Handler, der Logs an ein QTextEdit-Widget sendet.""" def __init__(self, text_widget=None): super().__init__() self.text_widget = text_widget if self.text_widget: self.text_widget.setReadOnly(True) def emit(self, record): msg = self.format(record) if self.text_widget: self.text_widget.append(msg) # Scrolle nach unten self.text_widget.moveCursor(QTextCursor.End) def setup_logger(name="main", level=logging.DEBUG): """ Konfiguriert und gibt einen Logger zurück. Args: name: Name des Loggers level: Logging-Level Returns: Konfigurierter Logger """ logger = logging.getLogger(name) # Verhindere doppelte Handler if logger.handlers: return logger logger.setLevel(level) # Datehandler log_file = os.path.join("logs", f"{name}.log") file_handler = logging.FileHandler(log_file) file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) logger.addHandler(file_handler) # Konsolen-Handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) logger.addHandler(console_handler) return logger def add_gui_handler(logger, text_widget): """ Fügt einem Logger einen GUI-Handler hinzu. Args: logger: Logger, dem der Handler hinzugefügt werden soll text_widget: QTextEdit-Widget für die Ausgabe """ gui_handler = LogHandler(text_widget) gui_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) logger.addHandler(gui_handler)