Initial commit
Dieser Commit ist enthalten in:
69
utils/logger.py
Normale Datei
69
utils/logger.py
Normale Datei
@ -0,0 +1,69 @@
|
||||
"""
|
||||
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)
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren