6.8 KiB
6.8 KiB
📊 MYP Logging & Debug System
🚀 Übersicht
Das MYP (Manage Your Printers) System verfügt über ein umfassendes, verbessertes Logging- und Debug-System mit modernen Features wie:
- 🎨 Farbige Konsolen-Ausgaben mit ANSI-Unterstützung
- 😀 Emoji-Integration für bessere Lesbarkeit
- ⏱️ Performance-Monitoring mit Ausführungszeit-Messung
- 🌐 HTTP-Request/Response-Logging für API-Debugging
- 💻 Cross-Platform-Unterstützung (Windows/Unix/Linux)
- 🔍 Strukturierte Debug-Informationen mit erweiterten Metadaten
📁 Struktur
utils/
├── logging_config.py # Haupt-Logging-Konfiguration
├── debug_utils.py # Debug-Hilfsfunktionen
debug_cli.py # Kommandozeilen-Debug-Tool
🎨 Features im Detail
1. Farbige Log-Ausgaben
Das System verwendet ANSI-Farbcodes für verschiedene Log-Level:
- 🔍 DEBUG: Cyan
- ℹ️ INFO: Grün
- ⚠️ WARNING: Gelb
- ❌ ERROR: Rot
- 🔥 CRITICAL: Roter Hintergrund mit weißem Text
2. Emoji-Integration
Emojis werden automatisch basierend auf Log-Level und Kategorie hinzugefügt:
Log-Level:
- 🔍 DEBUG
- ℹ️ INFO
- ⚠️ WARNING
- ❌ ERROR
- 🔥 CRITICAL
Kategorien:
- 🖥️ app
- ⏱️ scheduler
- 🔐 auth
- 🖨️ jobs
- 🔧 printers
- 💥 errors
- 👤 user
- 📺 kiosk
3. Performance-Monitoring
from utils.logging_config import measure_execution_time, get_logger
# Als Dekorator verwenden
@measure_execution_time(logger=get_logger("app"), task_name="Drucker-Scan")
def scan_printer():
# Ihre Funktion hier
pass
# Als Context-Manager verwenden
from utils.debug_utils import debug_timer
with debug_timer("Datenbankabfrage"):
# Ihr Code hier
pass
4. HTTP-Request/Response-Logging
Automatisches Logging aller HTTP-Anfragen und -Antworten:
# Wird automatisch für alle API-Endpunkte (/api/*) aktiviert
# Loggt:
# - Request-Method, URL, Headers, Parameter
# - Response-Status, Größe, Ausführungszeit
# - Client-IP und User-Agent
🛠️ Verwendung
Basis-Logging
from utils.logging_config import get_logger
# Logger für verschiedene Komponenten erstellen
app_logger = get_logger("app")
auth_logger = get_logger("auth")
jobs_logger = get_logger("jobs")
# Verwenden
app_logger.info("🚀 Anwendung gestartet")
auth_logger.warning("⚠️ Fehlgeschlagener Login-Versuch")
Debug-Funktionen
from utils.debug_utils import debug_dump, debug_trace, debug_function
# Objekt-Debugging
debug_dump(my_object, "Drucker-Konfiguration")
# Stack-Trace ausgeben
debug_trace("Checkpoint erreicht")
# Funktion automatisch debuggen
@debug_function(level=DebugLevel.VERBOSE)
def my_function():
pass
Memory-Monitoring
from utils.debug_utils import memory_usage, log_memory_usage
# Speicherverbrauch messen
memory_info = memory_usage()
print(f"RAM: {memory_info['rss']:.2f} MB")
# Automatisch loggen
log_memory_usage("Meine Anwendung")
🖥️ Debug-CLI
Das erweiterte Debug-CLI bietet mehrere Befehle:
# Vollständige Diagnose
python debug_cli.py diagnose
# Drucker scannen
python debug_cli.py scan
# API-Routen anzeigen
python debug_cli.py routes
# Systeminformationen
python debug_cli.py sysinfo
# Log-Dateien analysieren
python debug_cli.py logs
# Logging-System testen
python debug_cli.py test-logging
Interaktives Menü
Starten Sie das CLI ohne Parameter für ein interaktives Menü:
python debug_cli.py
⚙️ Konfiguration
Log-Level setzen
from utils.logging_config import setup_logging
# Debug-Modus aktivieren
setup_logging(debug_mode=True)
# Standard-Logging
setup_logging(debug_mode=False)
Debug-Level für Debug-Utils
from utils.debug_utils import set_debug_level, DebugLevel
# Debug-Level setzen
set_debug_level(DebugLevel.VERBOSE) # 0=MINIMAL, 1=NORMAL, 2=VERBOSE, 3=TRACE
Windows-Unterstützung
Das System aktiviert automatisch VT100-Unterstützung unter Windows für Farbausgaben:
# Automatische Aktivierung in logging_config.py
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
📊 Ausgabe-Beispiele
Startup-Logs
🚀 =================== MYP WIRD GESTARTET ===================
🖥️ [INFO] 📂 Log-Verzeichnis: ./logs
🖥️ [INFO] 📊 Log-Level: INFO
🖥️ [INFO] 💻 Betriebssystem: Windows 10
🖥️ [INFO] 🌐 Hostname: MYP-SERVER
🖥️ [INFO] 📅 Startzeit: 15.12.2024 14:30:00
🖥️ ========================================================
HTTP-Request-Logs
🔍 [DEBUG] 🌐 HTTP-Anfrage: GET /api/printers
🔍 [DEBUG] 📡 Remote-Adresse: 192.168.1.100
🔍 [DEBUG] 🧩 Inhaltstyp: application/json
✅ [DEBUG] ✅ HTTP-Antwort: 200
🔍 [DEBUG] ⏱️ Verarbeitungsdauer: 45.23 ms
🔍 [DEBUG] 📦 Antwortgröße: 2.1 KB
Performance-Monitoring
🔍 [DEBUG] ⏱️ Ausführungszeit: Drucker-Status-Prüfung - 234.56 ms
⚠️ [WARNING] ⏱️ Langsame Ausführung: API-Live-Drucker-Status - 1234.56 ms
🔧 Erweiterte Features
Error-Handling mit automatischem Logging
from utils.debug_utils import debug_exception_handler
@debug_exception_handler(logger=get_logger("app"))
def risky_function():
# Code der Exceptions werfen könnte
pass
Profiling
from utils.debug_utils import profile_function
@profile_function
def performance_critical_function():
# Wird automatisch profiliert
pass
Cache-Clearing
# API-Endpunkte zum Cache-Clearing
POST /api/printers/cache/clear
POST /api/admin/cache/clear
📈 Monitoring & Wartung
Log-Rotation
- Automatische Rotation bei 10 MB Dateigröße
- 5 Backup-Dateien werden behalten
- Separate Log-Dateien für verschiedene Komponenten
Backup & Cleanup
# Automatische Backups über backup_manager
# Cleanup über maintenance_scheduler
🔍 Troubleshooting
Farben funktionieren nicht
- Prüfen Sie die Terminal-Unterstützung:
from utils.logging_config import supports_color
print(supports_color())
- Windows: Stellen Sie sicher, dass VT100-Modus aktiviert ist
Performance-Issues
- Debug-Level reduzieren:
set_debug_level(DebugLevel.MINIMAL)
- HTTP-Logging für Produktion deaktivieren:
# In app.py die before_request/after_request Handler modifizieren
Memory-Leaks
- Memory-Monitoring aktivieren:
log_memory_usage("Komponente")
- Debug-Utils für Speicher-Profiling nutzen
📞 Support
Bei Problemen oder Fragen:
- Debug-CLI verwenden:
python debug_cli.py test-logging
- Log-Dateien prüfen:
python debug_cli.py logs
- Vollständige Diagnose:
python debug_cli.py diagnose
Erstellt für MYP v1.0.0 - Manage Your Printers 🖨️