Implementiere umfassendes Logging-System für WOL-Ereignisse
- 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
This commit is contained in:
110
LOGGING_README.md
Normal file
110
LOGGING_README.md
Normal file
@ -0,0 +1,110 @@
|
||||
# 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 abrufen
|
||||
- `GET /api/logs/pc/:id` - Alle Logs für einen bestimmten PC
|
||||
- `GET /api/logs/pc/:id/recent` - Die letzten 5 Logs für einen bestimmten PC
|
||||
|
||||
## Datenbankstruktur
|
||||
|
||||
### Tabelle: `wol_logs`
|
||||
```sql
|
||||
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
|
||||
```javascript
|
||||
// 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
|
||||
1. **Tooltips werden nicht angezeigt**: Überprüfen Sie, ob Bootstrap korrekt geladen ist
|
||||
2. **Logs werden nicht gespeichert**: Überprüfen Sie die Datenbankverbindung und -berechtigungen
|
||||
3. **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
|
||||
Reference in New Issue
Block a user