5.6 KiB
5.6 KiB
Log-Funktionalität Implementierung
Problembeschreibung
Die System-Logs im Admin-Dashboard wurden nicht geladen. Die JavaScript-Funktionalität fehlte und die API-Endpunkte waren unvollständig implementiert.
Durchgeführte Fixes
1. API-Endpunkte Implementiert
/api/admin/logs
(GET)
- Zweck: Lädt System-Logs für das Admin-Dashboard
- Features:
- Multi-Format Log-Parser (unterstützt verschiedene Log-Formate)
- Level-Filter (ERROR, WARNING, INFO, DEBUG, CRITICAL, ALL)
- Suchfunktion in Log-Nachrichten
- Component-Filter nach Log-Kategorien
- Paginierung (limit/offset)
- Automatische Duplikat-Entfernung
- Sortierung nach Timestamp (neueste zuerst)
/api/admin/logs/export
(GET)
- Zweck: Exportiert alle Log-Dateien als ZIP-Archiv
- Features:
- Sammelt alle .log Dateien aus dem logs-Verzeichnis
- Erstellt komprimierte ZIP-Datei
- Relativer Pfad-Erhalt in der ZIP-Struktur
- Automatische Dateinamen mit Timestamp
2. JavaScript-Funktionalität
Admin-Dashboard Logs-Management
// Neue Funktionen hinzugefügt:
- loadLogs(level = null) // Lädt Logs mit Filter
- displayLogs(logs) // Zeigt Logs formatiert an
- formatLogTimestamp(timestamp) // Formatiert Zeitstempel
- escapeHtml(text) // HTML-Escape für Sicherheit
- exportLogs() // Exportiert Logs als Datei
Event-Handler
#refresh-logs-btn
- Logs manuell aktualisieren#export-logs-btn
- Logs exportieren#log-level-filter
- Filter nach Log-Level
Automatisches Laden
- Logs werden automatisch geladen wenn:
- URL-Parameter
tab=logs
gesetzt ist - Das Logs-Container-Element sichtbar ist
- Die Seite das erste Mal geladen wird und der Logs-Tab aktiv ist
- URL-Parameter
3. HTML-Template Fixes
Progress Bar Fixes
- Entfernt problematische Jinja2-Style-Attribute aus HTML
- Verlagert Style-Definitionen in separaten
<style>
-Block - Behebt Linter-Fehler in Zeilen 121, 147, 173, 206, 455
Log-Display Komponenten
- Verbesserte Log-Anzeige mit Level-spezifischen Farben
- Icons für verschiedene Log-Level (❌, ⚠️, ℹ️, 🔍, 🚨)
- Responsive Layout für Log-Einträge
- Hover-Effekte und Transitionen
4. Log-Format Unterstützung
Format 1: Standard Format
2025-06-01 00:34:08 - logger_name - [LEVEL] MESSAGE
Format 2: Bracket Format
[2025-06-01 00:34:08] LEVEL: MESSAGE
Format 3: Einfaches Format
MESSAGE (als INFO-Level behandelt)
5. Error Handling & Performance
Robuste Fehlerbehandlung
- Try-catch für jeden Log-Parser-Schritt
- Fallback bei nicht lesbaren Dateien
- Graceful Degradation bei API-Fehlern
Performance-Optimierungen
- Maximal 10 Log-Dateien verarbeitet
- Maximal 500 Zeilen pro Datei
- Maximal 50 Einträge pro Datei
- UTF-8 Encoding mit Fehler-Ignorierung
6. UI/UX Verbesserungen
Loading States
- Spinner während des Ladens
- Informative Fehlermeldungen
- "Erneut versuchen" Button bei Fehlern
Responsive Design
- Mobile-optimierte Log-Anzeige
- Hover-Effekte und Animationen
- Dark-Mode Unterstützung
Accessibility
- ARIA-Labels für Screen-Reader
- Tastatur-Navigation
- Semantische HTML-Struktur
Verwendung
Admin-Dashboard Zugriff
- Als Administrator einloggen
- Zum Admin-Dashboard navigieren
- "Logs" Tab auswählen
- Logs werden automatisch geladen
Filter und Export
- Filter nach Level: Dropdown-Menü verwenden
- Aktualisieren: "Aktualisieren" Button klicken
- Export: "Export" Button für ZIP-Download
API-Direktzugriff
// Logs abrufen
fetch('/api/admin/logs?level=ERROR&limit=50')
.then(response => response.json())
.then(data => console.log(data.logs));
// Logs exportieren
window.location.href = '/api/admin/logs/export';
Technische Details
Abhängigkeiten
- Frontend: Admin-unified.js, Tailwind CSS
- Backend: Flask, SQLAlchemy, Python logging
- Tools: zipfile, glob, datetime
Sicherheit
- Admin-Berechtigung erforderlich (
@admin_required
) - CSRF-Token Validierung
- HTML-Escape für Log-Inhalte
- Input-Sanitization für Filter-Parameter
Logs-Verzeichnis Struktur
backend/logs/
├── app/
├── auth/
├── jobs/
├── printers/
├── scheduler/
├── errors/
└── *.log (direkte Log-Dateien)
Testing
Manuelle Tests
- ✅ Logs-Tab Laden
- ✅ Level-Filter Funktionalität
- ✅ Export-Funktionalität
- ✅ Error-Handling bei fehlenden Logs
- ✅ Auto-Loading bei Tab-Switch
Browser-Kompatibilität
- ✅ Chrome/Edge (moderne Versionen)
- ✅ Firefox (moderne Versionen)
- ✅ Safari (moderne Versionen)
- ✅ Mobile Browser
Bekannte Limitierungen
- Performance: Bei sehr großen Log-Dateien (>10MB) kann das Laden langsam sein
- Memory: Alle Logs werden im Speicher verarbeitet
- Real-time: Logs werden nicht in Echtzeit aktualisiert (manueller Refresh nötig)
Zukünftige Verbesserungen
- WebSocket Integration für Real-time Log-Updates
- Paginierung UI für bessere Navigation
- Erweiterte Filter (Datum, Komponente, Benutzer)
- Log-Archivierung und automatische Bereinigung
- Search Highlighting in Log-Inhalten
Changelog
2025-06-01 - Initial Implementation
- ✅ API-Endpunkte implementiert
- ✅ JavaScript-Funktionalität hinzugefügt
- ✅ HTML-Template Fixes
- ✅ Error-Handling verbessert
- ✅ Performance-Optimierungen
- ✅ UI/UX Verbesserungen
Support
Bei Problemen mit der Log-Funktionalität:
- Browser-Konsole auf Fehler prüfen
- Netzwerk-Tab für API-Anfragen überprüfen
- Server-Logs für Backend-Fehler analysieren
- Admin-Berechtigung verifizieren