# 📊 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

```python
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:

```python
# 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

```python
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

```python
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

```python
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:

```bash
# 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ü:

```bash
python debug_cli.py
```

## ⚙️ Konfiguration

### Log-Level setzen

```python
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

```python
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:

```python
# 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

```python
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

```python
from utils.debug_utils import profile_function

@profile_function
def performance_critical_function():
    # Wird automatisch profiliert
    pass
```

### Cache-Clearing

```python
# 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

```python
# Automatische Backups über backup_manager
# Cleanup über maintenance_scheduler
```

## 🔍 Troubleshooting

### Farben funktionieren nicht

1. Prüfen Sie die Terminal-Unterstützung:
```python
from utils.logging_config import supports_color
print(supports_color())
```

2. Windows: Stellen Sie sicher, dass VT100-Modus aktiviert ist

### Performance-Issues

1. Debug-Level reduzieren:
```python
set_debug_level(DebugLevel.MINIMAL)
```

2. HTTP-Logging für Produktion deaktivieren:
```python
# In app.py die before_request/after_request Handler modifizieren
```

### Memory-Leaks

1. Memory-Monitoring aktivieren:
```python
log_memory_usage("Komponente")
```

2. Debug-Utils für Speicher-Profiling nutzen

## 📞 Support

Bei Problemen oder Fragen:

1. Debug-CLI verwenden: `python debug_cli.py test-logging`
2. Log-Dateien prüfen: `python debug_cli.py logs`
3. Vollständige Diagnose: `python debug_cli.py diagnose`

---

*Erstellt für MYP v1.0.0 - Manage Your Printers* 🖨️ 