NEWS
Bestimmte LOG Einträge in separate txt-Datei schreiben
-
Hallo zusammen,
ich würde gerne bestimmte Ereignisse aus dem LOG in eine separate txt-Datei schreiben lassen. Wie realisiere ich das in Blockly? Die Datei soll auf meinem NAS liegen und einfach immer ergänzt werden mit dem neuen Eintrag.
"Wenn XYZ im LOG auftaucht, dann ergänze Eintrag in Z:\Dateien\Text.txt"
Danke!
Gruß surfer
-
@surfer09 sagte in Bestimmte LOG Einträge in separate txt-Datei schreiben:
Hallo zusammen,
ich würde gerne bestimmte Ereignisse aus dem LOG in eine separate txt-Datei schreiben lassen. Wie realisiere ich das in Blockly? Die Datei soll auf meinem NAS liegen und einfach immer ergänzt werden mit dem neuen Eintrag.
"Wenn XYZ im LOG auftaucht, dann ergänze Eintrag in Z:\Dateien\Text.txt"
Danke!
Gruß surfer
Auf Deinem NAS:
tail -f <deinSourceLog> |grep 'XYZ' > /lokaler/pfad/im/NAS
Bzw. wenn Du was anhängen willst:
tail -f <deinSourceLog> |grep 'XYZ' >> /lokaler/pfad/im/NAS
-
@surfer09
Ich würde das nicht in ein Blockly / JS oder so packen.
ioBroker schreibt das lokal in eine Text-Datei, daraus kannst Du es spielend extrahieren. -
@surfer09 sagte: in eine separate txt-Datei schreiben lassen. Wie realisiere ich das in Blockly?
Blockly unterstützt keine Datei-Operationen.
Node.js liefert die Funktion fs.appendFile. -
@surfer09 Ansonsten kann man natürlich auch NodeRed nutzen - aber wenn Du auf Blockly beschränkt bist, kannst Du ja mit entsprechenden NodeJS Bibliotheken eigene Funktionen erstellen. Du musst halt codieren.
-
@great-sun Danke für deine Rückmeldung. Ich bin leider nicht der geborene Programmierer, daher hätte ich gerne eine möglichst einfache Lösung. Wo müsste ich deinen genannten Code hinterlegen? Mein IO-Broker läuft auf einer Windows Kiste.
Kann mir vielleicht jemand mal ein funktionierendes Beispiel unter Node-Red zeigen? Vielleicht kann ich mir dann meinen Wunscvh davon ableiten. Ich habe leider noch keine Erfahrung mit Node-Red gesammelt.
Gruß surfer
-
@surfer09 Unter Windows (PowerShell):
Get-Content f:\templog.txt -wait | where {$_ -eq 'XYZ'} | Add-Content -Path textfile.txt
-
@surfer09 sagte in Bestimmte LOG Einträge in separate txt-Datei schreiben:
ich würde gerne bestimmte Ereignisse aus dem LOG in eine separate txt-Datei schreiben lassen.
Muss es eine separate Textdatei sein? Ansonsten kann der Log Parser Adpater nämlich genau das: Logmeldungen nach bestimmten Inhalten filtern und in separaten Datenpunkten als JSON wieder bereitstellen.
-
@surfer09 sagte in Bestimmte LOG Einträge in separate txt-Datei schreiben:
Kann mir vielleicht jemand mal ein funktionierendes Beispiel unter Node-Red zeigen? Vielleicht kann ich mir dann meinen Wunscvh davon ableiten. Ich habe leider noch keine Erfahrung mit Node-Red gesammelt.
Gruß surfer
Hiermit filtere ich das LOG und schreibe einen Logeintrag mit dem Text "Schreibe Logeintrag" und schreibe den in eigene Datei log.txt im Homeverzeichnis des iobrokers.
2022-05-15 09:44:58.426 - [32minfo[39m: node-red.1 (1661) 15 May 09:44:58 - [info] [debug:Test-Eintrag] Schreibe Logeintrag 2022-05-15 09:48:45.159 - [32minfo[39m: node-red.1 (1661) 15 May 09:48:45 - [info] [debug:Test-Eintrag] Schreibe Logeintrag 2022-05-15 09:50:23.203 - [32minfo[39m: node-red.1 (1661) 15 May 09:50:23 - [info] [debug:Test-Eintrag] Schreibe Logeintrag
Die Ausgabe kann auch noch formatieren, wenn es sein muss, sodass dieser mittlere Teil ausgeschnitten wird.
Und hier der Flow zum Import:
Als tail-File Node verwende ich diese Node - da diese am Besten damit zurecht kommt, wenn die Datei gewechselt wird.
https://github.com/Izdatyi/node-red-contrib-tail-file#node-red-contrib-tail-file
EDIT: Das mit dem direkt auf das NAS zu schreiben - kannst Du aber in meinen Augen meist vergessen. Dann lieber zyklisch kopieren. Ich glaube das hatten wir schon mal versucht und das gab immer Schreibprobleme wegen Berechtigungen. Das Kopieren ist in meinen Augen auch wesentlich besser, da man da nicht aufpassen muss, dass einem die Netzverbindung abreißt. ggf. kann man diesen Copy über diesen Flow gleich triggern - aber wie gesagt mit Netzlaufwerken muss die Berechtigung stimmen und die entspricht ja unter Windows dem Dienst unter dem der Adapter läuft.
Zum Kopieren habe ich in meinem System diese File-Nodes installiert:
https://flows.nodered.org/node/node-red-contrib-fs-ops -
@haus-automatisierung: Danke für deine Antwort! Den Adapter kannte ich noch nicht. Wäre mit Sicherheit auch eine Option..