NEWS
Journal-Log erstellen
-
ich frage deshalb danach, weil es vielleicht möglich ist, schon im log-vorgng etwas einzubinden, was als zeilentrenner später in nodered erkannt wird und durch </br> getauscht wird
-
@liv-in-sky
Bisher gibt es das LOG so noch nicht. Ich werde das durch andere Scripte erstellen und befüllen lassen.
Somit sind noch alle Wege offen. Das Testlog habe ich mit vi einfach selbst untereinander geschrieben.Denkbar und Sinnvoll wäre es, dass ich jede neue Zeile mit Datum, Uhrzeit + ": " Doppelpunkt am Ende beginne. Also z.B.
08.02.21 - 14:31: Zeile 1
08.02.21 - 14:31: Zeile 2
08.02.21 - 14:32: Bla
08.02.21 - 14:34: Bla blaWäre das zum parsen Sinnvoll?
-
-
@liv-in-sky sagte in Journal-Log erstellen:
zur not hilft uns vielleicht der regex meister ( @Homoran )
und irgendwann bringst du mir noch das parsen in js (Blockly) bei.
dann kann ich auch mit wget Daten holen -
@tomily sagte in Journal-Log erstellen:
08.02.21 - 14:31: Zeile 1
08.02.21 - 14:31: Zeile 2
08.02.21 - 14:32: Bla
08.02.21 - 14:34: Bla blaWäre das zum parsen Sinnvoll?
dann wäre da einfach ein Zeilenende? oder was sehe ich da nicht?
oder willst du nur den Text und nicht den Timestamp haben? -
@homoran
Schön wäre es, wenn einfach exakt der Inhalt der LogDatei im Dashbaord erscheint. Und zwar Zeile für Zeile, statt hintereinander.Wenn es zum Formatieren einfacher ist, würde ich das Datum/Uhrzeit zusätzlich in die LogDatei in jede Zeile schreiben lassen, um den Zeilenanfang erkennen zu können.
-
Wenn jeder eintrag mit einem Zeilenumbruch endet, geht das zumindest theoretisch einfach
Das RegEx wäre
([^\n]+)
und dann wieder +das Umbruchzeichen <br> ode /n aneinanderreihen -
-
@liv-in-sky sagte in Journal-Log erstellen:
gibt es dafür eine bessere schreibweise
hast du mein Regex nicht gesehen?
eine Gruppe (), darin beliebig viele alles außer \n = [^\n]+ -
-
@liv-in-sky sagte in Journal-Log erstellen:
bin mir nicht sicher, ob es \n enthält
hat es - siehe Screenshot
wenn nicht, bräuchte ich mal eine echte logdatei von @tomily
-
die haben wir ja noch nicht - muss er erst erstellen oder umbauen - auf jeden fall wissen wir, wie es funktionieren soll
ich arbeite ja damit - mit dem logfile von iobroker - das ist aber nur der test - das sind \r und \n drin - linux halt
-
@liv-in-sky sagte in Journal-Log erstellen:
die haben wir ja noch nicht - muss er erst erstellen oder umbauen
@tomily
kannst du uns bitte mal eine Datei zur Verfügung stellen, die du auswerten willst -
@homoran danke dir
habe es jetzt für mein beispiel so gelöst
(.*?)(?<!\r)\n
genug getestet - muss jetzt wieder an anderem script "wurschteln" - das nervt schon seit tagen
-
@homoran sagte in Journal-Log erstellen:
und irgendwann bringst du mir noch das parsen in js (Blockly) bei.
dann kann ich auch mit wget Daten holenvielleicht magst du dich damit spielen - braucht minimal javascript - kann aber mehrere reg-auflöungen hintereinander machen - du mußt dafür nur die array's richtig (myFilterRegexEvent5,myFilterRegexEvent6) füllen
orange: regex ausdruck - was wird gesucht
grün: mit was wird es ersetztda diese variablke ein array ist, kannst du ein komma setzen und in beiden arrays einfach ein zweites regex einsetzen - das wird dann anschliessend ausgeführt
ein beispiel aus meinem ical script (zuerst wird nach Biathlon... gesucht und ersetzt (mit Bia) und anschliessend nach SACK und ersetzt (mit Tonne):
let myFilterRegexEvent5=[/Biathlon(: .*)/,/(GELBE)R SACK/]; // Regex für EventAnzeige: event=event.replace(myFilterRegexEvent,myFilterRegexEvent2) let myFilterRegexEvent6=["Biat$1","$1 Tonne"];
myFilterRegexEvent5 und myFilterRegexEvent6 müssen immer gleich viele einträge haben - sonst mag das script nix ausfühen
-
@liv-in-sky DANKE!
Das sieht schaffbar aus - muss ich mal ventilieren -
@liv-in-sky Aber wenn ich gar nichts ersetzen (replace) will, sondern nur den Wert anzeigen/in eine Variable schreiben will??
-
-
-
@tomilyIch misch mich mal wieder ein.
Um eine eigene Logdatei zu schreiben bzw. anzuzeigen willst musst Du Dir ja ne Struktur aufbauen. Ich empfehle Dir ein Array mit Objekten gleichen Aufbaus - wie Datum, Ereignis usw.
Eingabe:
Die Log Dateien kannst Du mit Standard Nodes (wie file in) einlesen. Damit bekommst Du schon mal für jede Zeile eine Nachricht.
Die Aufteilung einer Zeile kannst Du dann wie @Homoran schreibt mit regulären Ausdrücken machen.Das geht auch mit regulären Ausdrücken in NodeRed ohne irgendwelche Funktionen nutzen zu müssen. Du kannst auch mit Gruppen ($1 und $2 ...) arbeiten und diese dann weiterverarbeiten. Damit kannst Du direkt neue Nachrichten erzeugen so habe ich das hier gemacht:
Damit kannst Du dann zum Beispiel schon mal ausfiltern welche Zeit Du haben willst.
Wie die Mitstreiter habe ich als Beispiel auch mal die iobroker log genommen und mit der file in eingelesen.
somit bekommst Du für jede Zeile eine Nachricht - die leeren Zeilen wurden herausgefiltert.
Wie Du siehst funktioniert das soweit ganz gut.
Zur Analyse der Logdateien bietet sich die Gruppenfunktion mit regulären Ausdrücken an, die NodeRed mit Hausmitteln bereits unterstützt.
Das siehst Du an diesem Change Node:
Ich sichere hier die Zeile / payload in 2 Zwischenobjekte und analysiere das Datum und das Ereignis aus und speichere es in einem eigenen Objekt, damit ich die payload dann löschen kann und als Objekt neu aufbauen kann:
Als Ergebnis erhälst Du dann ein wundeschönes Payload Objekt mit den Eigenschaften Date und Event die Du dann im weiteren Verlauf analysieren kannst.
Nun empfehle ich Dir solche Objekte in einem Array mit der gleichen Struktur als Flow Variable anzulegen.
und verarbeiten ... (Teil 2 folgt!)