# 📊 Umfangreiches Log-System - Dokumentation

## 🎯 **Übersicht**

Das erweiterte Log-System erfasst **alle wichtigen Ereignisse** in der Anwendung und bietet eine **zentrale Verwaltung** über das Admin-Panel.

## 📋 **Was wird erfasst:**

### ✅ **Anwendungs-Logs (Automatisch):**
- 📧 **E-Mail-Ereignisse:** Validierung, Bestätigung, Payment-Anweisungen, Erinnerungen
- 📅 **Termin-Ereignisse:** Status-Änderungen, Verifizierungen, Stornierungen
- 💰 **Payment-Ereignisse:** Status-Änderungen, Admin-Bestätigungen
- 👤 **Benutzer-Aktionen:** Anmeldungen, Admin-Aktionen
- ⚙️ **System-Ereignisse:** Fehler, Warnungen, Info-Meldungen

### ✅ **System-Logs (Import erforderlich):**
- 🔧 **Symfony-Logs:** `var/log/dev.log`, `var/log/prod.log`
- 🐘 **PHP-Error-Logs:** PHP-Fehler, Warnings, Notices
- 🌐 **Webserver-Logs:** Apache, Nginx Error-Logs
- 📊 **System-Logs:** Server-spezifische Logs

## 🚀 **Verwendung:**

### **1. Admin-Panel aufrufen:**
```
/appointments/admin/logs
```

### **2. System-Logs importieren:**
- **Button:** "System-Logs importieren"
- **Quellen:** Symfony, PHP, Apache, Nginx, Alle
- **Zeitraum:** 1-30 Tage zurück
- **Option:** Bereits importierte Logs überschreiben

### **3. Filter verwenden:**
- **Kategorie:** E-Mail, Termine, Zahlungen, System, etc.
- **Level:** Info, Success, Warning, Error, Debug
- **Entity-Typ:** Appointment, Availability, User, etc.
- **Datum:** Von/Bis Datum
- **Suche:** Text in Nachrichten und Details

### **4. Export & Verwaltung:**
- **CSV-Export:** Alle gefilterten Logs
- **Log-Bereinigung:** Alte Einträge löschen
- **Detail-Ansicht:** Vollständige Informationen

## 🔧 **Technische Details:**

### **Log-Entity:**
```php
- id: Eindeutige ID
- category: Kategorie (email, appointment, payment, system, etc.)
- level: Level (info, success, warning, error, debug)
- message: Nachricht
- details: Zusätzliche Details
- entityType: Entity-Typ (Appointment, Availability, etc.)
- entityId: Entity-ID
- userEmail: Benutzer-E-Mail
- ipAddress: IP-Adresse
- userAgent: User-Agent
- action: Aktion
- target: Ziel
- context: JSON-Kontext
- createdAt: Zeitstempel
```

### **LogService-Methoden:**
```php
// E-Mail-Logs
$logService->logEmailSent($type, $appointmentId, $email, $success, $error);

// Termin-Logs
$logService->logAppointmentStatusChange($appointmentId, $oldStatus, $newStatus, $reason);

// Payment-Logs
$logService->logPaymentStatusChange($appointmentId, $oldStatus, $newStatus, $confirmedBy);

// System-Logs
$logService->logSystemError($component, $error, $context);
$logService->logUserLogin($userEmail, $success, $error);
```

## 📊 **Automatische Integration:**

### **EmailService:**
- ✅ Alle E-Mail-Versendungen werden automatisch geloggt
- ✅ Erfolg/Fehler-Status wird erfasst
- ✅ Empfänger und Fehler-Details werden gespeichert

### **AppointmentController:**
- ✅ Status-Änderungen werden geloggt
- ✅ Verifizierungen werden erfasst
- ✅ Payment-Status-Änderungen werden dokumentiert

### **AdminAppointmentsController:**
- ✅ Admin-Aktionen werden geloggt
- ✅ Payment-Bestätigungen werden erfasst
- ✅ Benutzer-Info wird gespeichert

## 🔄 **Automatische Prozesse:**

### **Cron-Jobs:**
```bash
# System-Logs importieren (stündlich)
0 * * * * php bin/console app:import-system-logs --source=all --days=1

# Zahlungserinnerungen (täglich)
0 9 * * * php bin/console app:send-payment-reminders

# Outlook-Token erneuern (alle 2 Stunden)
0 */2 * * * php bin/console app:refresh-outlook-tokens
```

### **Command-Line:**
```bash
# System-Logs manuell importieren
php bin/console app:import-system-logs --source=symfony --days=7

# Alle Log-Quellen importieren
php bin/console app:import-system-logs --source=all --days=1 --force

# Nur PHP-Logs importieren
php bin/console app:import-system-logs --source=php --days=3
```

## 📈 **Log-Statistiken:**

### **Kategorien:**
- 📧 **E-Mail:** Versendungen, Fehler, Erfolge
- 📅 **Termine:** Status-Änderungen, Verifizierungen
- 💰 **Zahlungen:** Status-Änderungen, Bestätigungen
- 👤 **Benutzer:** Anmeldungen, Aktionen
- ⚙️ **System:** Fehler, Warnungen, Info
- 🔒 **Sicherheit:** Anmeldeversuche, Zugriffe
- 🎓 **Kurse:** Erstellung, Änderungen
- 📋 **Warteliste:** Einträge, Benachrichtigungen
- 📊 **Outlook:** Synchronisationen

### **Levels:**
- ℹ️ **Info:** Normale Ereignisse
- ✅ **Success:** Erfolgreiche Aktionen
- ⚠️ **Warning:** Warnungen
- ❌ **Error:** Fehler
- 🐛 **Debug:** Debug-Informationen

## 🎨 **Admin-Interface Features:**

### **Übersicht:**
- 📊 **Farbkodierte Badges** für Kategorien und Levels
- 🔍 **Umfangreiche Filter** und Suche
- 📱 **Responsive Design** für alle Geräte
- ⚡ **Auto-Refresh** alle 30 Sekunden

### **Detail-Ansicht:**
- 📋 **Vollständige Informationen** in Modal
- 🔗 **Entity-Verknüpfungen** mit IDs
- 🌐 **IP-Adresse und User-Agent**
- 📊 **JSON-Kontext** formatiert angezeigt

### **Export & Verwaltung:**
- 📤 **CSV-Export** mit Filtern
- 🧹 **Log-Bereinigung** (alte Einträge)
- 📥 **System-Log-Import** aus verschiedenen Quellen
- 🔄 **Automatische Aktualisierung**

## 🚨 **Wichtige Hinweise:**

### **Performance:**
- ⚡ **Indizierte Datenbank** für schnelle Abfragen
- 🔄 **Pagination** für große Datenmengen
- 🧹 **Automatische Bereinigung** alter Logs

### **Sicherheit:**
- 🔒 **Admin-Zugriff** erforderlich
- 🛡️ **IP-Adresse-Tracking** für Sicherheit
- 👤 **Benutzer-Zuordnung** für Audit-Trail

### **Wartung:**
- 📅 **Regelmäßige Bereinigung** empfohlen
- 🔄 **Automatischer Import** via Cron
- 📊 **Monitoring** der Log-Größe

## 🎯 **Best Practices:**

### **Für Entwickler:**
```php
// Logging in Services integrieren
$this->logService->logEmailSent('validation', $appointmentId, $email, true);

// Kontext-Informationen hinzufügen
$this->logService->logAppointmentStatusChange(
    $appointmentId, 
    $oldStatus, 
    $newStatus, 
    'Admin-Aktion',
    ['admin_user' => $this->getUser()->getEmail()]
);
```

### **Für Administratoren:**
- 🔍 **Regelmäßige Überprüfung** der Error-Logs
- 📊 **Monitoring** der System-Performance
- 🧹 **Wöchentliche Bereinigung** alter Logs
- 📈 **Analyse** der Benutzer-Aktivitäten

## 🎉 **Fazit:**

Das umfangreiche Log-System bietet:
- ✅ **Vollständige Transparenz** über alle System-Ereignisse
- ✅ **Zentrale Verwaltung** über Admin-Panel
- ✅ **Automatische Integration** in bestehende Services
- ✅ **System-Log-Import** aus verschiedenen Quellen
- ✅ **Umfangreiche Filter** und Export-Funktionen
- ✅ **Performance-optimiert** mit Indizierung
- ✅ **Sicherheits-Features** mit IP-Tracking

**Das System ist vollständig einsatzbereit und bietet maximale Transparenz über alle Anwendungs- und System-Ereignisse!** 🚀
