Eine 500, die der Benutzer sieht und das Protokoll nicht

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 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-11 20:41:47 +02:00
co-authored by Claude Opus 5
parent a44d55e71c
commit ce5dc66047
2 changed files with 31 additions and 1 deletions
+22
View File
@@ -260,6 +260,28 @@ using (var bereich = app.Services.CreateScope())
// sollte. Hier bekommt jede Ausnahme, die es bis nach oben schafft, einen // sollte. Hier bekommt jede Ausnahme, die es bis nach oben schafft, einen
// deutschen Satz; die Einzelheiten gehen ins Tagesprotokoll, wo man sie // deutschen Satz; die Einzelheiten gehen ins Tagesprotokoll, wo man sie
// sucht. // 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<Tagebuch>().Schreiben(
$"{zusammenhang.Response.StatusCode} auf "
+ $"{zusammenhang.Request.Method} {zusammenhang.Request.Path}"
+ zusammenhang.Request.QueryString,
Tagebuch.Art.Fehler);
}
});
app.UseExceptionHandler(zweig => zweig.Run(async zusammenhang => app.UseExceptionHandler(zweig => zweig.Run(async zusammenhang =>
{ {
var fehler = zusammenhang.Features var fehler = zusammenhang.Features
+9 -1
View File
@@ -99,7 +99,15 @@ public sealed class ScanCoordinator(
var tagebuch = bereich.ServiceProvider.GetRequiredService<Tagebuch>(); var tagebuch = bereich.ServiceProvider.GetRequiredService<Tagebuch>();
var melder = new Progress<Scanschritt>(schritt => var melder = new Progress<Scanschritt>(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 // **Vermerke stehen nur in der Datei.** Sie erklären, warum
// etwas so zugeordnet wurde — in der Fortschrittszeile wäre das // etwas so zugeordnet wurde — in der Fortschrittszeile wäre das