From ce5dc660471aedceb7abc69aee53c5034a69a295 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sun, 11 Oct 2026 20:41:47 +0200 Subject: [PATCH] Eine 500, die der Benutzer sieht und das Protokoll nicht MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Im Spieler stand „der Server hat den Download mit Fehler 500 abgelehnt", und im Tagesprotokoll war davon nichts zu finden. Der Haken, der Ausnahmen aufschreibt, fängt nur Ausnahmen; ein Endpunkt, der von sich aus `Results.Problem(… 500)` zurückgibt, läuft daran vorbei. Jetzt wird jede Antwort ab 500 vermerkt, mit Verfahren, Weg und Abfrage — egal woher sie kommt. Dieselbe Lehre wie beim ffmpeg-Fehler: eine Fehlermeldung, die nur der Benutzer sieht, ist eine Sackgasse. Dazu, weil es beim Suchen im Weg stand: „Hole Metadaten zu Phineas und Ferb 4×23 — 1334 von 1347" steht nicht mehr im Protokoll. Ein Auffrischen schrieb vierzehnhundert solche Zeilen und schob alles andere aus der Ansicht. Das ist Fortschritt, keine Auskunft; er gehört in die Fortschrittszeile, wo er auch steht. Was bleibt, sind die Vermerke — sie erklären, warum etwas so zugeordnet wurde — und die Zusammenfassung am Ende. Co-Authored-By: Claude Opus 5 --- server/src/Flaro.Api/Program.cs | 22 ++++++++++++++++++++++ server/src/Flaro.Api/ScanCoordinator.cs | 10 +++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/server/src/Flaro.Api/Program.cs b/server/src/Flaro.Api/Program.cs index c35a758..1ff26ec 100644 --- a/server/src/Flaro.Api/Program.cs +++ b/server/src/Flaro.Api/Program.cs @@ -260,6 +260,28 @@ using (var bereich = app.Services.CreateScope()) // sollte. Hier bekommt jede Ausnahme, die es bis nach oben schafft, einen // deutschen Satz; die Einzelheiten gehen ins Tagesprotokoll, wo man sie // sucht. +// **Jede Fünfhunderter-Antwort wird vermerkt, egal woher sie kommt.** +// +// Der Haken darunter fängt nur Ausnahmen. Ein Endpunkt, der von sich aus +// `Results.Problem(... 500)` zurückgibt, läuft daran vorbei — und genau so +// eine Antwort stand in der App („der Server hat den Download mit Fehler +// 500 abgelehnt"), während im Protokoll nichts davon zu finden war. Eine +// Fehlermeldung, die der Benutzer sieht und der Betreiber nicht, ist eine +// Sackgasse; dieselbe Lehre wie beim ffmpeg-Fehler vor ein paar Tagen. +app.Use(async (zusammenhang, weiter) => +{ + await weiter(zusammenhang); + + if (zusammenhang.Response.StatusCode >= 500) + { + zusammenhang.RequestServices.GetRequiredService().Schreiben( + $"{zusammenhang.Response.StatusCode} auf " + + $"{zusammenhang.Request.Method} {zusammenhang.Request.Path}" + + zusammenhang.Request.QueryString, + Tagebuch.Art.Fehler); + } +}); + app.UseExceptionHandler(zweig => zweig.Run(async zusammenhang => { var fehler = zusammenhang.Features diff --git a/server/src/Flaro.Api/ScanCoordinator.cs b/server/src/Flaro.Api/ScanCoordinator.cs index c68c70f..81b1bd4 100644 --- a/server/src/Flaro.Api/ScanCoordinator.cs +++ b/server/src/Flaro.Api/ScanCoordinator.cs @@ -99,7 +99,15 @@ public sealed class ScanCoordinator( var tagebuch = bereich.ServiceProvider.GetRequiredService(); var melder = new Progress(schritt => { - tagebuch.Schreiben(schritt.Text()); + // **Nicht jede Zeile ins Protokoll.** + // + // „Hole Metadaten zu Phineas und Ferb 4×23 — 1334 von 1347" + // ist Fortschritt, keine Auskunft: ein Auffrischen schrieb + // vierzehnhundert solche Zeilen und schob alles andere aus + // der Ansicht. Was bleibt, sind die Vermerke — sie erklären, + // warum etwas so zugeordnet wurde — und die Zusammenfassung + // am Ende. + if (schritt.Phase == Scanphase.Vermerk) tagebuch.Schreiben(schritt.Text()); // **Vermerke stehen nur in der Datei.** Sie erklären, warum // etwas so zugeordnet wurde — in der Fortschrittszeile wäre das