Log Messages im WebFront

Das Skript darf nicht direkt über das WebFront ausgeführt werden.
Michael

Okay das heißt ich müsste mir ein anderes Skirpt anlegen, was ich über WF ausführe, welches das Logfile Skript ausführt?
Oder eine Variable die eben das Skript ausführt?

Nein, nachdem Du das Script in der Console ausgeführt hast, werden die Variablen „Filter“ & „LogMessage“ darunter angelegt. Diese verlinkst Du in die Visu.

Durch Klicken auf den entsprechenden Filter-Button werden die Nachrichten gelesen und dargestellt!

Mehr nicht!

Gruß Heiko

Hallo Heiko,

mmh das hört sich eigentlich ziemlich simpel an ja. Allerdings wird bei mir die HTML Box im WF nicht gefüllt. Sobald in im WF zwischen den Filtern hin und herspringe, ändert sich in der Variablen „LogMessages“ zwar der Inhalt (seh ich ja in der Console), aber es wird lediglich der Header der Tabelle neu geschrieben.
Ich habe auch mal versucht das Skript etwas zu debuggen. Müssten in der Variablen $cmd nicht die Nachrichten aus dem Logfile drin stehen? Diese hat immer nur den Inhalt: grep -E „( ERROR | WARNING | CUSTOM | NOTIFY | SUCCESS )“ /var/log/symcon/logfile.log

Der Pfad auf dem Raspberry stimmt und manuell über WINSCP zum Logfile zeigt mir auch, dass es nicht leer ist:confused:

Was gibt den


grep -E "( ERROR | WARNING | CUSTOM | NOTIFY | SUCCESS )" /var/log/symcon/logfile.log

aus, wenn Du es mit Putty mal direkt ausführst?

Gruß Heiko

Komisch den Effekt hatte ich heute auch !

Hatte dann „sift“ installiert. Dachte daran liegt es.
Habe dann hin und her probiert.
Der Zeitraum von/bis wurde nach jedem Lauf abgeschltet, das habe ich noch eliminiert

// IPS_SetEventActive($LogMsgInf['eid'],false); /* Zeitanzeige im WebFront ausblenden (für evtl. zur Verwirrung) */ Remarked lueralba

Es ging dann beim Testen plötzlich wieder…:confused: :eek:

lueralba

Hallo,

hatte nun endlich Zeit das mal zu testen.
Die Ausgabe:

grep -E "( ERROR | WARNING | CUSTOM | NOTIFY | SUCCESS )" /var/log/symcon/logfile.log

Gibt mir das in putty wieder, was im logfile steht, auch funktioniert der Filter hier. Hier z.b.
.

10/12/19 00:00:02 | 00000 | SUCCESS | Kernel | Log File Rotation after Midnight…
10/12/19 04:31:58 | 12256 | WARNING | ScriptEngine | Result for Event 48364
10/12/19 05:34:44 | 37102 | NOTIFY | Blind Controller | ‚Blind Controller - Schlafen‘ wurde manuell geöffnet.
10/12/19 05:36:42 | 12256 | WARNING | ScriptEngine | Result for Event 48364
.

Auch Filter, das hier zeigt mir nur die Zeilen mit SUCCESS an

grep -E "( SUCCESS )" /var/log/symcon/logfile.log

zeigt mir z.B. nur die Zeilen mit SUCCESS an.
:confused:

Hmm, merkwürdig!

Mach doch mal ein Screenshot vom Objektbaum („Vom Script und darunter“ & von deinen Links in der Visu).

Ansonsten müsste man mal eine Teamviewer Session machen!

Gruß Heiko

Sorry für die verspätete Antwort. Ich wollte das Skript erstmal eben versuchen zu verstehen, bevor ich wild schreie das nichts geht. Und die Zeit hatte ich bisher leider nicht :).

Also anbei die Fotos vom Objektbaum. Ich verlinke zwar die komplette Instanz, aber auch wenn ich nur die Variablen „Filter“ und „LogMessages“ ins WF verlinke ist der Effekt derselbe… Kein Anzeigen des Logfiles.

Ich komme im Skript bis zu Zeile 297:


foreach ($out as $line) { 
       $array = explode("|", $line);

Davor ein

var_dump($out); 

und ich sehe im WF die Ausgabe eines Arrays mit, je nachdem welchen Filter ich anwähle, unterschiedlichen vielen Feldern beschrieben.

Soweit sogut.

Danach geht es anscheinend in der Zeile 310 nicht mehr weiter, denn die Ausgabe „hallo“ sehe ich zwar vor dem if noch, darin aber nicht mehr.

     
if(array_key_exists(1 ,$LogMsgInf['filteropt'][$filter_key]))
        { echo("hallo");

Danke für weitere Infos.

VG

Zeile 295
Der substr ist falsch.


if(substr($array[0],11,8) >= $von and substr($array[0],11,8) <= $bis){} else {continue;} /* Zeile innerhalb des 'Zeitraum von / bis' */

Das Datum im Log sieht so aus:
10/12/19 00:00:02

Mit dem substr($array[0],11,8) wird alles vor dem 11. Zeichen abgeschnitten.
Das ergibt dann:
:00:02

Also ändern auf substr($array[0], 9, 8) dan wird alles vor dem 9. Zeichen abgeschnitten und die Stunden bleiben.
Dann kommt auch 00:00:02

Und dann sollte der Vergleich auch wieder etwas bringen.

oder noch besser, den substr weglassen und das Datum entsprechend formatieren.


$time = date("H:i:s", strtotime($array[0]));

if($time >= $von and $time <= $bis){} else {continue;} /* Zeile innerhalb des 'Zeitraum von / bis' */

Einfach nur ein grosses Danke für das tolle Script!

Hallo,

hat zu diesem Script ein funktionierende Endversion? Trotz Einbau der anschließenden Scriptänderungen kommen schlussendlich bei Wechsel zwischen den Filtern immer nicht näher dargestellt Fehlermeldungen im Webfront, die keiner Aufschluss über die Ursache geben.

Grüße

Was heißt „nicht näher dargestellt Fehlermeldungen“? Bissle mehr Infos braucht man schon, z.B. Screenshots usw.

Gruß Heiko

Regarding the ERROR message within the webfront just delete the empty space characters from the first and last lines of the script (lines with <? and ?>)

Seit der Verwendung des Wandtablets verwende ich dieses hilfreiche Script von pitti.
Schon länger wollte ich jedoch auch das wenn ich auf Logfile am Tablet navigiere, die aktuellen
Einträge schon da stehen ohne auf einen Button zu klicken.
Habe nun endlich Zeit gefunden das nun umzusetzen und ein Modul dafür zu erstellen. Falls es jemand beta testen möchte bitte ich um Rückmeldungen.

Habs mal installiert. Funktioniert soweit.
Bis jetzt aufgefallen

  • es gibt zwei Instanzen. Logfile und Logdatei. Sind offenbar indent

Wozu dient der „Debug“ Schalter?

Ist nur ein Alias… (kann ich auch entfernen wenn es für Verwirrung sorgt)
Debug: Damit man weiss was das Ding so tut (im Debugfenster des Moduls…)

Hallo @SimonS
Wäre es möglich den Filter etwas aufzubohren? Nämlich auch die Zeilen von Variable Watch und Script Watch. Bei den Variable Watch müsste man aufpassen, dass man bei HTML Variablen nicht zu viel Text nimmt. Aber das kann man eh einstellen.

Kann ich mir ansehen, wenn wieder mal etwas Zeit ist.

@SimonS , es ist keine Eile notwendig. Ich hab für mich eine andere Lösung gefunden.