- Neue Log-Tabelle in der Datenbank - Automatisches Logging bei WOL-Button-Klicks - Dedizierte Logs-Seite mit Bootstrap-Design - Tooltips mit letzten 5 WOL-Ereignissen pro PC - API-Endpunkte für Log-Verwaltung - Einheitliches Design zwischen Haupt- und Logs-Seite - Vollständige Dokumentation des Logging-Systems
3.8 KiB
3.8 KiB
Medi-WOL Logging-System
Übersicht
Das Medi-WOL Logging-System protokolliert alle Wake-on-LAN (WOL) Ereignisse in der Datenbank und bietet verschiedene Möglichkeiten, diese Logs anzuzeigen und zu verwalten.
Funktionen
1. Automatisches Logging
- WOL-Ereignisse: Jedes Mal, wenn ein PC über die Web-Oberfläche aufgeweckt wird, wird automatisch ein Log-Eintrag erstellt
- Auslöser-Tracking: Unterscheidung zwischen manuellen Button-Klicks und automatischen Cron-Jobs
- Vollständige Protokollierung: Timestamp, PC-Name, MAC-Adresse und Auslöser werden gespeichert
2. Log-Anzeige
- Dedizierte Logs-Seite: Übersicht aller WOL-Ereignisse unter
/logs - Tooltips: Zeigt die letzten 5 WOL-Ereignisse für jeden PC als Tooltip über der Tabellenzeile
- Sortierung: Logs werden nach Zeitstempel sortiert (neueste zuerst)
3. API-Endpunkte
GET /api/logs- Alle Log-Einträge abrufenGET /api/logs/pc/:id- Alle Logs für einen bestimmten PCGET /api/logs/pc/:id/recent- Die letzten 5 Logs für einen bestimmten PC
Datenbankstruktur
Tabelle: wol_logs
CREATE TABLE wol_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
pc_id INTEGER NOT NULL,
pc_name TEXT NOT NULL,
mac TEXT NOT NULL,
trigger TEXT NOT NULL,
FOREIGN KEY (pc_id) REFERENCES pcs (id) ON DELETE CASCADE
);
Felder
- id: Eindeutige ID des Log-Eintrags
- timestamp: Zeitstempel des WOL-Ereignisses
- pc_id: Referenz auf den PC (Foreign Key)
- pc_name: Name des PCs (für bessere Lesbarkeit)
- mac: MAC-Adresse des PCs
- trigger: Auslöser des WOL-Ereignisses ("button" oder "cron")
Verwendung
1. Logs-Seite aufrufen
Navigieren Sie zu http://localhost:8080/logs um alle WOL-Logs anzuzeigen.
2. Tooltips verwenden
- Bewegen Sie den Mauszeiger über eine PC-Zeile in der Haupttabelle
- Ein Tooltip zeigt die letzten 5 WOL-Ereignisse für diesen PC an
3. API verwenden
// Alle Logs abrufen
const response = await fetch('/api/logs');
const logs = await response.json();
// Logs für einen bestimmten PC abrufen
const pcLogs = await fetch(`/api/logs/pc/${pcId}`);
const logs = await pcLogs.json();
// Letzte 5 Logs für einen PC abrufen
const recentLogs = await fetch(`/api/logs/pc/${pcId}/recent`);
const logs = await recentLogs.json();
Erweiterungen
Cron-Job Logging
Das System ist vorbereitet für automatische WOL-Ereignisse über Cron-Jobs. Diese würden mit dem Trigger "cron" protokolliert werden.
Log-Bereinigung
Für Produktionsumgebungen sollte eine Log-Bereinigung implementiert werden, um alte Log-Einträge nach einem bestimmten Zeitraum zu löschen.
Export-Funktionalität
Zukünftige Versionen könnten CSV- oder PDF-Export der Logs bieten.
Technische Details
Implementierung
- Backend: Go mit Gin-Framework
- Datenbank: SQLite mit Foreign Key Constraints
- Frontend: HTML, CSS, JavaScript mit Bootstrap
- Tooltips: Bootstrap Tooltip-System mit HTML-Inhalt
Sicherheit
- HTML-Escaping für alle Benutzereingaben
- Validierung der API-Parameter
- Keine sensiblen Daten in den Logs
Performance
- Indizierte Datenbankabfragen
- Lazy Loading der Tooltips
- Begrenzte Anzahl von Log-Einträgen pro Tooltip (5)
Fehlerbehebung
Häufige Probleme
- Tooltips werden nicht angezeigt: Überprüfen Sie, ob Bootstrap korrekt geladen ist
- Logs werden nicht gespeichert: Überprüfen Sie die Datenbankverbindung und -berechtigungen
- Fehler beim Laden der Logs: Überprüfen Sie die API-Endpunkte und die Datenbankstruktur
Debugging
- Überprüfen Sie die Browser-Konsole auf JavaScript-Fehler
- Überprüfen Sie die Server-Logs auf Backend-Fehler
- Testen Sie die API-Endpunkte direkt mit einem HTTP-Client