Systemdesign\Änderungen und Logging - notrautmann/TINF23CS1 GitHub Wiki
Änderungen und Logging
1. Einleitung
Dieses Dokument beschreibt das Design für die Änderungsnachverfolgung und das Logging in unserem System. Ziel ist es, Änderungen nachvollziehbar und auswertbar zu machen, ohne unnötige Daten zu sammeln. Gleichzeitig soll das Logging standardisiert und kontextreich erfolgen.
2. Anforderungen
- Nachvollziehbarkeit: Jede Änderung muss zeitlich, inhaltlich und ursächlich nachvollziehbar sein.
- Datensparsamkeit: Es werden nur die minimal notwendigen Daten gespeichert.
- Standardisierung: Einheitliche Formate und Prozesse für Änderungen und Logs.
- Auswertbarkeit: Einfaches Erstellen von Berichten, Dashboards und Alerts.
3. Architektur
- logging Komponente in existierenden Services
- Zentrale Datenbank mit Dokumenten Speicher
- Kommunikation mit Anwendung zur Stammdatenpflege
4. Zu loggende Daten
- Änderungen an Datenbankstruktur (neue Tabellen, Spalten)
- Aktionen die Admin Zugriff auf Systemkomponenten benötigen
- Änderung an Mitarbeiter Daten und Finanzdaten
- einzelne Komponenten können zusötzlich loggen (Was genau entscheidet der Entwickler der Komponente)
5. Log-Format
- Struktur: JSON-Format für einfache Verarbeitung.
- Mindestfelder:
timestamp
: ISO 8601level
: Log-Level (Debug, Info, Warn, Error, Fatal)service
: Name der Anwendung/Komponenteid
: Identifikatoruser_id
: Optional, wenn verfügbarmessage
: Freitextnachrichtcontext
: JSON-Objekt mit zusätzlichen Attributen
Beispiel-Eintrag
{
"timestamp":"2025-04-29T14:23:05Z",
"level":"Info",
"service":"database-service",
"id":"abcd-1234-efgh-5678",
"user_id":"user-9876",
"message":"Neuer Mitarbeiter",
"context":{"edited table Employees": ["Günther", "45", "Bäcker", "100.000"]}
}