[Beta][Modul] LogAnalyzer - Auswertung der Symcon Logs

Hallo,

da ich auch immer wieder interessiert bin schnell ins Log zu schauen ohne erst das Backend öffnen zu müssen habe ich eine Modul für die Tile View gebaut wo man die Log Datei schnell einsehen und auswerten kann. Wer Interesse hat, kann gerne davon Gebrauch nehmen.

Im Store zu finden unter genauer Eingabe von “LogAnalyzer” im Suchfeld.

Ansonsten unter Github:

LogAnalyzer

Das Modul LogAnalyzer ermöglicht die Analyse und Filterung von IP-Symcon Logdateien direkt im WebFront.
Logeinträge können nach verschiedenen Kriterien gefiltert, durchsucht und als CSV exportiert werden.

Hinweis: Dieses Modul ist ausschließlich für die neue Kachelansicht (Tile View) von IP-Symcon entwickelt.
Die klassische WebFront-Ansicht wird nicht unterstützt.



1. Funktionsumfang

  • Anzeige von IP-Symcon Logdateien im WebFront

  • Filterung nach:

    • Textinhalt (Meldung)

    • Log-Level (Typ)

    • Sender

    • ID

  • Kombinierte Filterlogik:

    • UND / ODER Verknüpfung
  • Begrenzung der angezeigten Einträge (Limit)

  • Automatische Aktualisierung (Auto-Refresh)

  • Umschaltbares Theme (Dark / Light)

  • Dynamische Dropdowns basierend auf vorhandenen Logdaten

  • CSV-Export der gefilterten Logeinträge

  • Unterstützung mehrzeiliger Logeinträge:

    • Stacktraces

    • PHP-Fatal-Errors

    • Debug-Ausgaben mit Zeilenumbrüchen

    • automatische Gruppierung zu zusammenhängenden Einträgen

Verarbeitung von Logeinträgen

IP-Symcon Logdateien enthalten nicht ausschließlich strikt formatierte Einträge.

Neben standardisierten Zeilen im Format:

Datum | ID | Typ | Sender | Meldung

können auch mehrzeilige Inhalte auftreten, z. B.:

  • Stacktraces

  • PHP-Fatal-Errors

  • mehrzeilige Debug-Ausgaben

Diese Einträge entsprechen nicht dem Standard-Schema und werden vom Modul automatisch erkannt und zu einem logischen Eintrag zusammengefasst.

Dabei gilt:

  • Eine neue Logzeile beginnt immer mit einem Zeitstempel (DD.MM.YYYY)

  • Alle folgenden Zeilen ohne Zeitstempel werden als Fortsetzung interpretiert

  • Diese Zeilen werden intern zusammengeführt und gemeinsam dargestellt


2. Voraussetzungen

  • IP-Symcon ab Version 8.1 empfohlen

  • Zugriff auf eine gültige Logdatei (z. B. logfile.log)


3. Software-Installation

  • Über den Module Store das Modul LogAnalyzer installieren

  • Alternativ über das Module Control eine entsprechende Repository-URL hinzufügen


4. Einrichten der Instanzen in Symcon

Unter „Instanz hinzufügen“ kann das Modul LogAnalyzer über den Schnellfilter gefunden und hinzugefügt werden.


Konfigurationsseite:

Name Beschreibung
LogFilePath Pfad zur auszuwertenden Logdatei (z. B. /var/log/symcon/logfile.log). Wenn leer, wird automatisch das Standard-Logverzeichnis verwendet.

5. Statusvariablen und Profile

Dieses Modul legt keine eigenen Statusvariablen oder Profile an.

Die gesamte Darstellung erfolgt direkt über die Visualisierung.


6. Visualisierung

Die Visualisierung stellt eine interaktive Oberfläche zur Analyse der Logdaten bereit.

Funktionen:

  • Filterbereich

    • ID

    • Typ (Log-Level)

    • Sender

    • Freitextsuche in Meldungen

  • Optionen

    • Filtermodus (UND / ODER)

    • Limit der angezeigten Einträge

    • Theme-Auswahl (Dark / Light)

    • Auto-Refresh (alle 5 Sekunden)

  • Aktionen

    • Aktualisieren der Daten

    • Export als CSV-Datei

  • Tabelle

    • Datum/Uhrzeit

    • ID

    • Typ

    • Sender

    • Meldung

    • Mehrzeilige Einträge (z. B. Stacktraces) werden innerhalb einer Zelle zusammenhängend dargestellt

    • Zeilenumbrüche innerhalb eines Logeintrags bleiben erhalten und werden visuell eingerückt dargestellt

  • Statusanzeige

    • Anzahl gefilterter Einträge

    • Anzahl angezeigter Einträge


7. PHP-Befehlsreferenz

Dieses Modul stellt keine öffentlichen PHP-Funktionen zur direkten Verwendung bereit.


8. Screenshots

WebFront Ansicht

Ansicht im Webfront der neuen Kacheloberfläche - hier DarkMode:

Ansicht im Webfront der neuen Kacheloberfläche - hier LightMode:


Konfigurationsformular (Backend)

Ansicht im Konfigurationsformular des Moduls:


Hinweise

  • Große Logdateien können die Ladezeit beeinflussen

  • Für optimale Performance empfiehlt sich die Nutzung eines sinnvollen Limits

  • Der CSV-Export enthält alle aktuell gefilterten Datensätze

  • Nicht alle Inhalte in der Logdatei entsprechen dem standardisierten Logformat. Das Modul ist darauf ausgelegt, auch abweichende bzw. mehrzeilige Einträge korrekt zu verarbeiten und darzustellen.

5 „Gefällt mir“

Super Idee und Modul.

Leider obwohl 8.1 läuft und das log im Standardordner leigt bleibt die Visu leer.

Komisch auch die Warnung:

Idee?

danke+lg hagi

Hab das Modul mal installiert.

folgender Fehler taucht auf:

Hallo hagi01, die Warnung über dem Pfad ist nur eine Info und hat keine Auswirkung auf den Ablauf. Da ist ein Bug, den ich in der nächsten Version korrigiere. Warum die Visu leer bleibt beschäftigt mich mehr. Hast du in der Visu direkt das Modul eingebunden oder einen Link auf das Modul reingelegt? Welches Betriebssystem?

Hallo power1625, offensichtlich ist der RAM voll. Wie groß ist die Logdatei? Welches Betriebssystem und welcher Unterbau/Gerät, Version IPS? Da werde ich wohl noch etwas nachhärten müssen. Wenn die Dateien zu groß sind, dann kann ich die wohl nicht voll in den Speicher laden.

Hallo Lan

Symcon 9.0, Raspberry Pi (arm64), 05.03.2026, b9a34e92f86a

Holla die Waldfee, du hast ja Logs zwischen26 und teils bis knapp an die 100MB. Schau mal in die Spezialschalter. Da ist mit 9.0 zwischenzeitlich eingeführt worden bestimmtes Logging im Standard abzuschalten 8wird nur nicht bei Update automatisch übernommen). Ich glaub unter anderen “ScriptWatch”. Da wird viel unnötiges Zeug geloggt. In meinem Modul werde ich mal schauen, wie ich mit solchen Logs umgehen kann - ohne alles in den Arbeitsspeicher zu laden.

Ich habe mal den SpriptWatch und VariableWatch deaktiviert, wusste gar nicht das die aktiv waren.

Jetzt wird schon mal was angezeigt, wenn ich Kachel erweitere ist sie leer ist das normal?

Leere Kachel nach erweitern ist normal. Das geht leider nicht anders mit dem html sdk

Gruß Stephan

Super Modul! Vielen Dank dafür. Jetzt wo es existiert, weiß man erst, dass man es vermisst hat :slight_smile:

Darf ich gleich mit ein paar Wünschen kommen, die mir beim Ausprobieren aufgefallen sind?

  • bei ID, Typ und Sender würde ich mir gerne eine Mehrfachauswahl wünschen (z.B. nach WARNINGS und ERRORS filtern)
  • die Einstellung des Light oder Dark Modus finde ich noch suboptimal. Zum einen bleibt sie bei mir nicht erhalten, zum anderen kollidiert sie mit der Einstellung der Visu. Wenn nicht beide synchron sind, dann kann man den Kacheltitel nicht lesen. Wäre es nicht besser, auf die Einstellung zu verzichten und den Modus der Kachelvisu automatisch zu übernehmen?
  • es fehlt ein Vollbildmodus :slight_smile:

@Dr.Niels Das ist in diesem Fall hier sehr schlecht. Eine Logfile ruft förmlich danach. Auch ist man es als Anwender gewohnt, dass man HTML-Darstellungen zum Vollbild erweitern kann. Ließe sich da nicht etwas machen?

1 „Gefällt mir“

HTML als Vollbild ist weiterhin auf unserer Roadmap :+1: Wir sind halt nur noch nicht da angekommen

1 „Gefällt mir“

Hatte ich bereits zwecks Erweiterung und Verbesserung auf der eigenen Liste. Das ist ja erstmal der Anfang und steckt noch viel Potential drinnen. Stück für Stück wird das noch erweitert. Die nächste Revision wird erstmal ein Schutz gegen zu große Logs erhalten. Um damit umzugehen muss ich etwas mehr schrauben - habe aber schon einen Weg aufgemacht das in den Griff zu bekommen.

Die Vollbildsache liegt ja bei Dr.Niels. Mal schauen wann das soweit sein wird. Ich habe mir die Log in einer einer eigenen Kategorie gemacht wo sonst nichts anderes ist, dann kann man das schon sehr groß ziehen.

3 „Gefällt mir“

So, erst mal die wichtigsten Sachen erledigt, sodass große Logs erkannt werden und es eine Fehlermeldung kommt mit entsprechenden Anweisungen.

v0.2.0_beta1
Versionsprüfung anpassen in Formular, Bug im Link zu Github
Prüfung Loggröße in Abhängigkeit der PHP memory

Auf der Wunschliste steht aktuell noch:
Oberen Bereich festhalten und nur unten scrollen, aber nur umschaltbar per Flag
Mehrfachauswahl in den DropDowns
Dropdown aller Logdateien, auch ältere zur Auswahl
DarkLight aus Symcon Einstellung übernehmen (Rückmeldung Dr.Niels)
Seiteweise vorblättern bei Auswahl der maxLines je Seite
Große Logdateien ermöglichen
Anzeige bei MaxExpand-Kachel (Erweiterung Symcon abzuwarten)

Ahh jetzt wird es auch gleich klarer woran das Problem liegt :wink:

Selbes Thema wie oben.

438 MB ist ne Hausnummer :cold_face: :see_no_evil_monkey: :speak_no_evil_monkey: :hear_no_evil_monkey:

So jetzt die Spezialschalter deaktiviert, aber noch immer fast 50MB.

@KaiS Kai deine Energierechner müllen das log ohne Ende zu, kann man das irgendwo deaktivieren?

lg hagi

Poste mal bitte einen Auszug aus dem Log im Modul Thread.

Grüße,
Kai

Hast PN :wink: lg hagi

Normalerweise halte ich mich eigentlich aus Ungemach raus, aber weil ich ja selber mal das Log per Script ins WebFront gebracht habe zwei kleine Anmerkungen:

  1. den User das Log file so weit runterschrumpfen zu lassen das nix mehr drin ist kann für ein Modul das LogAnalyser heißt keine gute Idee sein
  2. der Versuch das ganze File in den Speicher zu lesen halte ich auch nicht für eine gute Idee

Vielleicht falsch, vielleicht aber regt es auch zur Lösung in die richtige Richtung an.

Nutze erstmal weiter mein StatusLog-Script weiter :slight_smile:

Duck und weg!

2 „Gefällt mir“

Darum wird mein Log in eine MySQL Tabelle geschrieben. Mit Blätterfunktion in der HTML Tabelle und einstellbarer Anzahl der Zeilen pro Seite. Selbst wenn das Log 1GB hat, funktioniert das.

Ja, warum nicht. Wichtig ist, das es funktoniert :slight_smile:
Nur wenn man von außen es so hinoptimieren muss, das was geht - kann nicht die Lösung sein - jedenfalls mein Gedanke!

Für mich ist das Log klar nach dem Motto “haben ist besser als brauchen” konfiguriert, 700-800 MB am Tag sind normal. Das ist mit dem klassichen Handling in PHP nicht wirklich sinnvoll nutzbar.

Aber eine einfache, schnelle Lösung würde ich auch gut finden :innocent: .