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