Repository navigation
Log-Datei: Log in Tagesdateien, einstellbar auf der Log-Seite - #46
Merged
Merged
Conversation
…hängt) fileSink schreibt den Logstrom ab einem eigenen Level in evcc-YYYY-MM-DD.log, packt die Vortagesdatei im Hintergrund, räumt nach Alter und nach 1 GB auf und schaltet sich bei Fehlern für den Lauf ab. Output reicht jede Zeile unverändert an den Ringpuffer der Log-Seite und unter demselben Mutex an die Datei; das Einschalten schreibt den Pufferinhalt ohne Lücke und ohne Duplikat. SetFile, FileStatus und CloseFile sind die Schnittstelle. Ohne SetFile passiert nichts. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
newLogger schreibt über logstash.Output statt direkt in den Ringpuffer, runRoot ruft nach den Shutdown-Funktionen logstash.CloseFile. Vertragstests: eine Zeile jedes Levels, redigiert, landet in Datei und Log-Seite; der Puffer vor dem Einschalten ist in der Datei; CloseFile schreibt aus. forkHooks und Touch-Point-Tabelle um beide Hooks ergänzt. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Key logFile, site.API LogFile/SetLogFile, GET und POST /api/logfile mit Prüfung von Level und Tagen. restoreLogFile hängt in restoreCustom und schaltet die Datei nach einem Neustart wieder ein. Ordner: /config/logs, wenn /config ein Verzeichnis ist, sonst logs neben der Datenbank. Tests: Ordnerwahl, ohne Einstellung nichts geschrieben, Einstellung übersteht den Neustart, ungültige Werte, Routen. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
LogFileButton neben dem Download-Knopf zeigt aus oder das Level, der Dialog schaltet die Datei ein, setzt Level und Aufbewahrung und zeigt Ordner, Anzahl Dateien, Größe und einen Fehler. Eine Zeile in Log.vue hängt den Knopf ein, als UI-Hook in forkUiHooks und in der Touch-Point-Tabelle. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Abschnitt 18 beschreibt Verhalten, Ordner, Aufräumen, Fehlerfall und API; eigene Dateien in der Liste; watch.json beobachtet den Logger-Unterbau (evcc PR 32018). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s, Warnungen sofort schreiben - Einstellung ändern oder wieder einschalten schreibt nur Zeilen, die noch nicht in der Datei sind - 1 GB gilt auch, während die heutige Datei wächst: ältere Dateien gehen sofort, erreicht die heutige allein die Grenze, pausiert sie bis zum nächsten Tag - warn und error werden sofort geschrieben, damit die Zeilen vor einem Absturz nicht im Puffer verloren gehen - Aufbewahrung zählt den heutigen Tag mit (14 Tage = heute und die 13 davor) - Tageswechsel über die Uhrzeit des nächsten Tages statt Datumsformat pro Zeile - Test, dass writeWith dasselbe speichert wie Write Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Was und warum
evcc hält sein Log nur in einem Ringpuffer mit 10.000 Zeilen. Bei debug reicht das für 1–2 Stunden. Für den Live-Betrieb von evcc custom auf dem Produktivsystem soll das Log mehrere Tage nachvollziehbar sein.
Neu: Log-Datei, einstellbar auf der Log-Seite über einen Knopf neben dem Download.
evcc-YYYY-MM-DD.log. Ältere Tage werden gepackt (.log.gz), Dateien über die Aufbewahrung hinaus gelöscht. Alle Dateien zusammen sind fest auf höchstens 1 GB begrenzt./config/logsim Add-on (per Samba unteraddon_configslesbar), sonstlogsneben der Datenbank.Konzept:
konzepte/2026-10-05-log-datei.md.Eingriffe in evcc-Dateien
util/log.go: Die Logger schreiben anlogstash.Outputstatt anlogstash.DefaultHandler.Outputgibt jede Zeile unverändert an den Puffer weiter (Vertragstest).cmd/root.go:logstash.CloseFile()voros.Exit, nachdem die Shutdown-Handler gelaufen sind.assets/js/views/Log.vue: hängtLogFileButtonein.Alle drei stehen in der Touch-Point-Tabelle und in
forkHooks/forkUiHooks.watch.jsonbeobachtet evcc PR 32018 (neuer Logger-Unterbau), weil er den Eingriff inutil/log.gobetreffen kann.Tests
core,core/lm/...,core/peak,server,util,util/logstash,cmdgrün, auchTestForkHooksInPlace.util/logstashzusätzlich 5× gemischt.fecheck.sh: vue-tsc, lint, i18n, vitest 232/232.steps_logfile.mjsgegen einen WSL-Build: Dialog, Einschalten, Datei vorhanden, ungültige Tage werden abgelehnt, Ausschalten.-race(wsltest.shbaut ohne cgo). Den Add-on-Pfad/config/logsprüfe ich live beim nächsten Release.Hinweis
Bei evcc kann eine Zeile, in der ein Geheimnis geschwärzt wird und die auch auf die Konsole geht, im Log-Puffer fehlen:
redactWritermeldet eine kürzere Länge, undio.MultiWriterbricht dann ab. Damit fehlt sie auch in der Datei. Das ist bestehendes evcc-Verhalten und wird hier nicht geändert.Für das Add-on
CHANGELOG:
addon_configs/<add-on>/logs(per Samba lesbar). Level und Aufbewahrung sind einstellbar, höchstens 1 GB.DOCS.md, Abschnitt „Log-Datei“:
🤖 Generated with Claude Code