[Improvement] Kein Logging, keine Health-Endpunkte, keine CancellationToken #56
Labels
No labels
bug
critical
database
duplicate
enhancement
help wanted
invalid
performance
question
refactoring
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Aceless/RecipePlanner#56
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Logging
Im gesamten Backend wird kein
ILoggerverwendet. Fehlgeschlagene Logins, Rechtefehler, Datenbankfehler und Upload-Probleme hinterlassen keine Spur. Bei einem 500 gibt es ausserhalb der Konsolenausgabe des Frameworks nichts zum Nachsehen.Vorschlag: strukturiertes Logging (Serilog o. ae.), Correlation-Id je Request, Warn-Log bei jedem abgelehnten Zugriff, Error-Log mit Kontext in der zentralen Fehlerbehandlung.
Health
Es gibt keinen
/health-Endpunkt. Docker und der Reverse Proxy koennen nicht feststellen, ob die Anwendung und ihre Datenbankverbindung funktionieren.Vorschlag:
AddHealthChecks().AddNpgSql(connectionString)undMapHealthChecks("/health"), dazu einHEALTHCHECKim Dockerfile.CancellationToken
Keine Controller-Action und keine Repository-Methode nimmt einen
CancellationTokenentgegen. Bricht der Client ab, laufen Datenbankabfragen weiter.Vorschlag:
CancellationTokendurchreichen und inCommandDefinitionan Dapper uebergeben.Teilweise erledigt.
Logging:
ILoggerwird jetzt verwendet. Der zentrale Fehler-Handler loggt jeden 500er mit Stacktrace, Methode und Pfad und jede abgelehnte Anfrage als Warnung. Fehlgeschlagene Logins und nicht löschbare Bilddateien werden ebenfalls protokolliert. Ein strukturiertes Logging-Framework mit Correlation-Id ist noch nicht eingerichtet, die TraceId steckt aber bereits in jeder ProblemDetails-Antwort.Health:
GET /healthist da und prüft die Datenbankverbindung über dieNpgsqlDataSource. Getestet, liefertHealthy.CancellationToken: nur dort durchgereicht, wo es ohne Umbau ging, also Bild-Upload und AppInfo. Für die Repositories bräuchte jeder Dapper-Aufruf eine
CommandDefinition. Das ist reine Fleißarbeit über rund 40 Aufrufstellen und bleibt offen, damit dieser Änderungssatz überschaubar bleibt.Bleibt für den CancellationToken-Teil offen.
Branch
backend/issue-fixes, Commits2a1cc95,026544c.