Das Protokoll kannte nur, was jemand ausdrücklich hineinschrieb
Start, Ende, ein paar Fehler — mehr stand nie drin. Dabei meldet der Server längst, was er tut: „Scan gestartet", „Strom angelegt", „Untertitel aus … gezogen", „Bibliothek ohne Treffer". Das ging alles an `ILogger` und damit in die Container-Ausgabe, wo es zwischen den EF-Abfragen untergeht. Eine Senke hängt das Tagebuch jetzt an die Protokollkette. Nur Flaros eigene Kategorien — `Microsoft.*` käme mit einer Zeile je Datenbank- abfrage und machte das Protokoll nach einem Scan unlesbar. Debug und Trace bleiben draussen, die sind fürs Entwickeln. Damit fallen die beiden Stellen weg, an denen ich gestern von Hand ins Tagebuch geschrieben habe; sie kommen jetzt über denselben Weg wie alles andere. Der Name der Quelle steht davor: „Streamkoordinator: …". Nebenbei: das Tagebuch wird von Hand gebaut statt aus dem Behälter geholt. Die Senke braucht es, bevor der Behälter steht, und ein `BuildServiceProvider()` dafür legte eine zweite Ausgabe an — zwei Tagebücher mit zwei Schlössern, die sich beim Schreiben ins Gehege kommen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
19ec17da19
commit
347ddfea01
@@ -63,7 +63,6 @@ public sealed class Streamkoordinator(
|
||||
FfmpegOptions ffmpeg,
|
||||
Schluesselbilder schluesselbilder,
|
||||
TimeProvider clock,
|
||||
Tagebuch tagebuch,
|
||||
ILogger<Streamkoordinator> log) : IDisposable
|
||||
{
|
||||
private readonly ConcurrentDictionary<Guid, Eintrag> _sitzungen = new();
|
||||
@@ -198,8 +197,7 @@ public sealed class Streamkoordinator(
|
||||
+ (plan.Hoehe is { } h ? $", auf {h}p" : "")
|
||||
+ $" — Schlüsselbildsuche {suche} ms, Vorbereitung {uhr.ElapsedMilliseconds} ms.";
|
||||
|
||||
log.LogInformation("Strom {Kennung}: {Meldung}", kennung, meldung);
|
||||
tagebuch.Schreiben(meldung);
|
||||
log.LogInformation("{Meldung}", meldung);
|
||||
|
||||
return sitzung;
|
||||
}
|
||||
@@ -406,17 +404,9 @@ public sealed class Streamkoordinator(
|
||||
}
|
||||
|
||||
sitzung.Fehler = text.Trim();
|
||||
log.LogWarning("Strom {Kennung}: ffmpeg endete mit {Code}: {Fehler}",
|
||||
sitzung.Kennung, prozess.ExitCode, sitzung.Fehler);
|
||||
log.LogError("Wiedergabe gescheitert: ffmpeg endete mit {Code}. {Fehler}",
|
||||
prozess.ExitCode, sitzung.Fehler);
|
||||
|
||||
// **Auch ins Tagesprotokoll, nicht nur in die Konsole.** Die
|
||||
// Fehlermeldung im Spieler verweist aufs Protokoll von heute —
|
||||
// und dort stand nichts, weil `ILogger` in den Container-Ausgaben
|
||||
// landet und das Tagebuch eine eigene Datei ist. Der Hinweis war
|
||||
// damit eine Sackgasse.
|
||||
tagebuch.Schreiben(
|
||||
$"Wiedergabe gescheitert: ffmpeg endete mit {prozess.ExitCode}. {sitzung.Fehler}",
|
||||
Tagebuch.Art.Fehler);
|
||||
});
|
||||
|
||||
_ = Task.Run(() => prozess.StandardOutput.ReadToEndAsync());
|
||||
|
||||
Reference in New Issue
Block a user