Von dblog zurück zu Filelog

Begonnen von Tommy82, 27 Januar 2016, 20:17:05

Vorheriges Thema - Nächstes Thema

Tommy82

Hallo,
ich möchte gerne von dblog zurückkehren zu Filelog, das es zum einen ein Problem gibt wo Rudi nur bei Filelog helfen kann, aber auch weil ich mit Filelog Persönlich einfach besser klargekommen bin.

Wie gehe ich da am besten vor? Kann ich in einem vorgang für alle definierte Devices einen separaten Filelog anlegen, oder wie  müsste ich das machen?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

rudolfkoenig

Ich vermute es gibt bisher wenig Erfahrung mit sowas, und ich meine erst recht kein Automatismus.
Es sind zwei Teilaufgaben: FileLogs anlegen und alte Daten convertieren.

FileLogs anlegen kann man zwar mit "createlog device", der nach den autocreate-Regeln ein FileLog anlegt, ich empfehle es aber nicht, da man dadurch zu viele Einzeldateien bekommt, wo zu viel gespeichert wird. Nachteile sind Performance-Probleme beim Plot-Rendern, und Speicherplatzprobleme, auch beim Backup. Stattdessen wuerde ich aus den (SVG-) Beduerfnissen heraus FileLogs anlegen, wo zu einem Thema (z.Bsp. innentemperaturen) die benoetigten Daten gelogt werden. Zunaechst das FileLog anlegen z.Bsp. mit "define inTemp FileLog ./log/inTemp-%Y.log .*temp", und dann das Regexp anpassen, z.Bsp. mit dem "Regexp Parts" in der Detailansicht (dafuer ist ein eventLog Instanz erforderlich). DbLog kann parallel mitlaufen, damit man keine Daten verliert, die zusaetzliche Belastung sollte nicht uebertrieben hoch sein.

Beim konvertieren alter Daten sollte man die FileLogs schon angelegt haben, damit man die Ausgabe filtern kann. Danach FHEM stoppen, und fuer jeden der FileLog Dateien im Shell SQL-Befehle durchfuehren (hier am Beispiel von mysql):
% mysql -B --disable-column-names -ufhemuser -pfhempassword fhem -e "select CONCAT(REPLACE(TIMESTAMP,' ','_'),' ',DEVICE,' ',EVENT) from history where DEVICE='myTempDevice'  and year(TIMESTAMP)=2016" > ./log/inTemp-2016.log
Die WHERE Bedingung ist anzupassen!

Danach mit einem Editor pruefen, ob die Dateien die geforderten Inhalte haben, und wenn ja, FHEM starten.
Im FHEM kann man im DetailAnsicht der FileLogs die Inhalte nochmal pruefen.

Tommy82

Hi,
da ich eine Lösung /den Fehler in meinem Ursprungs Problem gefunden habe, werde ich erst nochmal abstand davon halten, mir eine neue Baustelle aufzumachen.

Trotzdem Danke für denn sehr ausführlichen Tip
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI