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:
Scarriffle
2026-10-10 20:30:23 +02:00
co-authored by Claude Opus 5
parent 19ec17da19
commit 347ddfea01
3 changed files with 75 additions and 15 deletions
+14 -2
View File
@@ -190,7 +190,20 @@ builder.Services.AddHostedService(sp => sp.GetRequiredService<Wartungsplan>());
// Im Arbeitsspeicher und nur dort: wer gerade was schaut, ist eine Frage
// ueber den Augenblick. Nach einem Neustart lautet die Antwort: niemand.
builder.Services.AddSingleton<PlaybackSessions>();
builder.Services.AddSingleton<Tagebuch>();
// **Von Hand gebaut, nicht aus dem Behälter geholt.** Die Protokollsenke
// braucht ihn, bevor der Behälter steht; ein `BuildServiceProvider()` dafür
// legte eine zweite Ausgabe an — zwei Tagebücher mit zwei Schlössern, die
// sich beim Schreiben ins Gehege kommen.
var tagebuch = new Tagebuch(pfade, TimeProvider.System);
builder.Services.AddSingleton(tagebuch);
// **Was der Server ohnehin meldet, gehört auch ins Tagesprotokoll.**
//
// „Scan gestartet", „Strom angelegt", „Untertitel gezogen" standen längst
// im Quelltext — sie gingen nur an die Container-Ausgabe, wo sie zwischen
// den EF-Abfragen untergehen. Die Senke nimmt nur Flaros eigene Kategorien;
// `Microsoft.*` bliebe sonst mit einer Zeile je Datenbankabfrage darin.
builder.Logging.AddProvider(new Tagebuchsenke(tagebuch));
// **Die Schlüssel der Datenverschlüsselung gehören ins Volume.**
//
@@ -383,7 +396,6 @@ if (Directory.Exists(oberfläche))
// macht den Unterschied zwischen „dauert eben" und „stürzt ab". Steht mitten
// im Scan ein Start, weiss man es beim nächsten Blick ins Protokoll.
{
var tagebuch = app.Services.GetRequiredService<Tagebuch>();
var leben = app.Services.GetRequiredService<IHostApplicationLifetime>();
leben.ApplicationStarted.Register(() =>