Files
Claude Project Manager d41c9f7eac Playwright_Videoabspielen
2025-10-18 21:41:33 +02:00

77 Zeilen
2.2 KiB
Python

"""
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)
# Dateihandler: Stelle sicher, dass das Log-Verzeichnis existiert
log_dir = os.path.join("logs")
try:
os.makedirs(log_dir, exist_ok=True)
except Exception:
# Falls das Anlegen fehlschlägt, weiter mit aktuellem Verzeichnis
pass
log_file = os.path.join(log_dir, 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)