From 34ade18ed64592ddca0cd99b428cef5e8c639713 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sat, 10 Oct 2026 19:51:41 +0200 Subject: [PATCH] =?UTF-8?q?=E2=80=9EDie=20Einzelheiten=20stehen=20im=20Pro?= =?UTF-8?q?tokoll=20von=20heute"=20=E2=80=94=20standen=20sie=20nicht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Spieler verweist bei einer gescheiterten Wiedergabe aufs Tagesprotokoll. Dort stand nichts: `ILogger` landet in den Container-Ausgaben, und das Tagebuch ist eine eigene Datei, in die nur Scan, Wartung und unbehandelte Ausnahmen schreiben. Der Hinweis war eine Sackgasse — gemessen an einem Protokoll, das einen ganzen Tag Betrieb mit vier Zeilen Start und Ende wiedergab, während eine Wiedergabe mit 500 abgebrochen war. Jetzt geht der ffmpeg-Fehler auch dorthin. Co-Authored-By: Claude Opus 5 --- server/src/Flaro.Api/Streamkoordinator.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/src/Flaro.Api/Streamkoordinator.cs b/server/src/Flaro.Api/Streamkoordinator.cs index 85d8675..7deacbc 100644 --- a/server/src/Flaro.Api/Streamkoordinator.cs +++ b/server/src/Flaro.Api/Streamkoordinator.cs @@ -63,6 +63,7 @@ public sealed class Streamkoordinator( FfmpegOptions ffmpeg, Schluesselbilder schluesselbilder, TimeProvider clock, + Tagebuch tagebuch, ILogger log) : IDisposable { private readonly ConcurrentDictionary _sitzungen = new(); @@ -323,6 +324,15 @@ public sealed class Streamkoordinator( sitzung.Fehler = text.Trim(); log.LogWarning("Strom {Kennung}: ffmpeg endete mit {Code}: {Fehler}", sitzung.Kennung, 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());