1
Fehlerbehandlung-und-Logging
blaerf edited this page 2025-11-29 13:59:46 +01:00
Fehlerbehandlung und Logging
Ziel dieses Dokuments
Dieses Dokument beschreibt, wie Fehler in der Anwendung erkannt, behandelt und protokolliert werden sollen.
Es dient als Richtlinie für alle Entwickler, damit Fehlersituationen einheitlich behandelt werden.
Grundprinzipien
-
Benutzerfreundlich im Frontend
- Benutzer sehen nur verständliche, neutrale Fehlermeldungen.
- Interne Details (z. B. LDAP-Verbindungsstring, SNMP-Community-Strings, PowerShell-Pfade) werden niemals im Browser angezeigt.
-
Detailreich im Log
- Technische Details werden in Logdateien geschrieben (z. B. Exception-Message, Stacktrace, Kontextinformationen).
- Logs dienen zur Analyse von Problemen in Entwicklung, Test und Produktion.
-
Sicherheit geht vor
- Keine Passwörter oder Zugangsdaten im Klartext im Log.
- Sensible Felder (z. B. Benutzerpasswörter) werden maskiert oder gar nicht geloggt.
Fehlerarten
-
Technische Fehler
- LDAP-Verbindungsfehler
- SNMP-Timeouts oder ungültige OIDs
- Fehler bei der Ausführung von PowerShell-Skripten
- interne PHP-Exceptions (z. B. ungültige Konfiguration)
-
Anwendungsfehler
- Ungültige Eingaben im Formular (Login, CSV-Daten, etc.)
- fehlende Pflichtfelder
- ungültige Dateiformate
-
Authentifizierungs-/Autorisierungsfehler
- falsche Anmeldedaten
- Benutzer nicht berechtigt, bestimmte Funktion auszuführen
Behandlungsstrategie
1. Fehler im Controller
- Controller fangen Exceptions aus Services ab.
- Für den Benutzer wird eine passende, generische Meldung vorbereitet (z. B. „Die Anmeldung ist fehlgeschlagen.“).
- Technische Details werden an die Logging-Schicht übergeben.
2. Fehler in Services
- Services dürfen Exceptions werfen, wenn:
- ein nicht behebbarer Fehler auftritt (z. B. Konfiguration fehlt),
- externe Systeme nicht erreichbar sind.
- Services loggen keine direkten Benutzerinformationen, sondern nur Kontextdaten (z. B.
usernameohne Passwort).
Logging-Konzept (Basis)
Hinweis: Die konkrete technische Umsetzung (Pfad, Log-Rotation, Logging-Library) kann projektspezifisch angepasst werden.
-
Logziel
- Logdateien im Server-Dateisystem (z. B.
C:\inetpub\logs\php_admin_tool\app.log). - Zugriff nur für Administrator.
- Logdateien im Server-Dateisystem (z. B.
-
Mindestinformationen pro Logeintrag
- Zeitstempel
- Log-Level (INFO, WARNING, ERROR)
- Komponente (z. B.
LdapDirectoryService,SnmpServerStatusService) - Nachricht
- Kontextdaten (sofern verfügbar, z. B.
route,username,server)
-
Beispiel für Log-Eintrag (Semantik)
[2025-11-29 10:15:23] ERROR LdapDirectoryService: Bind to LDAP server failed (server=ad.example.local, port=636, error=Invalid credentials)
Umgang mit kritischen Fehlern
- Bei kritischen Fehlern (z. B. keine Verbindung zum AD, SNMP nicht erreichbar):
- Benutzer sehen eine neutrale Fehlermeldung.
- Es wird ein Eintrag mit Level ERROR oder CRITICAL geschrieben.
- Falls sinnvoll, wird eine Fallback-Seite (z. B. „Wartungsmodus“) angezeigt.
ToDos
- Auswahl und Integration einer Logging-Lösung (z. B. eigene Klasse oder Monolog).
- Festlegen des Logverzeichnisses und der Berechtigungen.
- Definition von einheitlichen Log-Formaten für LDAP, SNMP und PowerShell.