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 8601
    • level: Log-Level (Debug, Info, Warn, Error, Fatal)
    • service: Name der Anwendung/Komponente
    • id: Identifikator
    • user_id: Optional, wenn verfügbar
    • message: Freitextnachricht
    • context: 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"]}
}