Hauptmenü

Logfile kürzen

Begonnen von ingo46, 06 November 2022, 10:49:55

Vorheriges Thema - Nächstes Thema

ingo46

Hallo,

ich möchte die Einträge ins Logfile verringern. Alle Fensterkontakte schreiben ins gleiche Logfile. Bisher:


define FileLog_FENSTERKONTAKT FileLog ./log/FENSTERKONTAKT-%Y.log FK.*


Ich möchte aber nur die Einträge, die "on off Open Closed" haben (nicht z.B. "Window: Closed")

Mein Versuch mit klappt nicht.

define FileLog_FENSTERKONTAKT FileLog ./log/FENSTERKONTAKT-%Y.log FK.*:on|off|Open|Closed


Was mache ich falsch?

Ingo



Otto123

#1
Hallo Ingo,

im oberen Teil der Detailansicht von FileLog_FENSTERKONTAKT gibt es einen Punkt Regexp parts - dort kannst Du interaktiv wählen was geloggt werden kann und soll

Der Eintrag FK.* klingt gruselig. Auszug aus der commandref
Zitatdefine <name> FileLog <filename> <regexp> [readonly]
...
Der Ausdruck unter regexp wird anhand des Gerätenames überprüft und zwar devicename:event oder der timestamp:devicename:event-Kombination. Der regexp muss mit dem kompletten String übereinstimmen und nicht nur teilweise.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: ingo46 am 06 November 2022, 10:49:55

define FileLog_FENSTERKONTAKT FileLog ./log/FENSTERKONTAKT-%Y.log FK.*:on|off|Open|Closed


Was mache ich falsch?

Versuche es mal mit Klammern um die events:

(on|off|Open|Closed)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

OdfFhem

Der Hinweis von @betateilchen ist wichtig. Zusätzlich muss man noch die Lücke zwischen : und Wert berücksichtigen - z.B.:

FK.*:.*(on|off|Open|Closed)
oder
FK.*:.(on|off|Open|Closed)

TomLee

Das es mit Klammern aussenrum klappt ist mir bewusst, dann werden aber dort wo Otto vorgeschlagen hat (unter Regexp Parts) beim ersten und letzten Regexp die Klammern mit angezeigt, das hat mich bisher immer stutzig gemacht und mich gefragt ob das mit Klammern dann richtig sei, deshalb hab ich das meiste umgestellt auf ohne Klammern.

Kann man die Klammern unter regexp parts also einfach ignorieren ?

Wernieman

Di willst erreichen on oder off oder Close oder OPen .. und dafür sind nicht nur die | wichtig, sondern auch die (). Gehört also zu Regex dazu!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

#6
Wenn ich das mit Regexp Parts mache (oder auch händisch) kommt bspw. sowas raus, einfach ohne ():

gelöscht weil Unfug

Wozu brauchts jetzt noch die Klammern ?

Otto123

Zitat von: OdfFhem am 06 November 2022, 11:31:45
... Zusätzlich muss man noch die Lücke zwischen : und Wert berücksichtigen - z.B.:
Wenn es sich um state Events handelt, ist da keine Lücke. Kann man übrigens auch im Eventmonitor erzeugen / modifizieren lassen. Beispiel:
Event
2022-11-06 13:09:55 CUL_HM FensterAZL closed
define
define FensterAZL_FileLog_1 FileLog ./log/FensterAZL_FileLog_1.log FensterAZL:closed
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

ZitatKann man übrigens auch im Eventmonitor erzeugen / modifizieren lassen

Wozu aber der Umweg über Eventmonitor, wenn man mit dem "Wizard" das entsprechende Event einfach auswählen kann ?

Otto123

#9
Weil man im Wizard nicht die Werte auswählen kann, dort geht es nur auf der device:reading Ebene.
Ich wollte das aber nur als zusätzliches Hilfsmittel anführen. ;)

Im Übrigen, damit der Wizard beim Entfernen nicht die Klammern anzeigt kann man es ausführlicher schreiben:
FK.*:on|FK.*:off|FK.*:Open|FK.*:Closed
Ob das effizienter im System (analog NOTIFYDEV) ist, weiß ich nicht.
Der Grund warum Klammern im Wizard komisch aussehen, ist sicher auch so etwas wie dem konservativem Suchmuster Mechanismus geschuldet?
https://forum.fhem.de/index.php/topic,115414.msg1096784.html#msg1096784
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ingo46

#10
Danke für eure Antworten. Ich habe die Sache getestet:

vorher:
2022-11-06_12:36:11 FK.EZ Window: Closed
2022-11-06_12:36:11 FK.EZ Reliability: ok
2022-11-06_12:36:11 FK.EZ batteryState: ok
2022-11-06_12:36:11 FK.EZ Closed
2022-11-06_12:40:21 FK.EZ Window: Closed
2022-11-06_12:40:21 FK.EZ Reliability: ok
2022-11-06_12:40:21 FK.EZ batteryState: ok
2022-11-06_12:40:21 FK.EZ Closed
2022-11-06_12:44:31 FK.EZ Window: Closed
2022-11-06_12:44:31 FK.EZ Reliability: ok
2022-11-06_12:44:31 FK.EZ batteryState: ok
2022-11-06_12:44:31 FK.EZ Closed


nachher:
022-11-06_13:15:47 FK.EV Window: Closed
2022-11-06_13:15:47 FK.EV Closed
2022-11-06_13:15:55 FK.AH Window: Open
2022-11-06_13:15:55 FK.AH Open
2022-11-06_13:16:38 FK.SZ Window: Closed
2022-11-06_13:16:38 FK.SZ Closed
2022-11-06_13:16:47 FK.WZ Window: Closed
2022-11-06_13:16:47 FK.WZ Closed
2022-11-06_13:16:58 FK.AH Window: Closed
2022-11-06_13:16:58 FK.AH Closed


Jetzt sollten noch die Zeilen mit "Window:" verschwinden.

Noch ein Problem: Die Sensoren senden alle 4 Minuten ihren Zustand. Wäre es da nich möglich nur ins Logfile aufzunehmen, wenn sich der Status verändert?
Bisher hatte ich mir keine Gedanken über die Größe des Logfiles gemacht - aber für die Fensterkontakte ist er im Laufe des Jahres auf ca. 140 MB angewachsen.

Ingo

Otto123

Welchen der 5 Vorschläge hast Du getestet?  ::) die waren alle anders und könnten von Dir auch noch missverständlich umgesetzt sein. ;)

An den Fensterkontakten kannst Du die Event Flut mit event-on-change-reading & co eingrenzen. Das hilft auch dem LogFile.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

OdfFhem

Zitat von: Otto123 am 06 November 2022, 13:17:01
Wenn es sich um state Events handelt, ist da keine Lücke.
Stimmt und bei state Events gibt es (normalerweise) auch keinen ":"

Ich habe jetzt mal genauer bei meinen "Beispielen" geschaut und obwohl im regexp ein : enthalten ist, wird auch das state Event geloggt. Daher scheint klar, dass der definierte regexp wohl nicht 1:1 zum Einsatz kommt, sondern uminterpretiert wird ... richtig ?

Otto123

#13
ein Trenner ( : ) ist im Suchmuster eigentlich immer. Und zwar zwischen Devicename und Event. Der wird nur gerne weggelassen :)
ZitatDer Ausdruck unter regexp wird anhand des Gerätenames überprüft und zwar devicename:event oder
Bei den speziellen state Events fehlt ja der Readingname, der normal auch mit einem : abgeschlossen ist.
Beispiel:
2022-11-06 14:05:43 CUL_HM FensterAZL contact: closed (to VCCU)
2022-11-06 14:05:43 CUL_HM FensterAZL closed


Deswegen hatte ich eingangs gesagt das sieht gruselig aus. Zwei Buchstaben und "der Rest" als Suchmuster trifft eben auf jedes Device, das mit FK beginnt
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Nobbynews

#14
Zitat von: ingo46 am 06 November 2022, 13:39:51
Bisher hatte ich mir keine Gedanken über die Größe des Logfiles gemacht - aber für die Fensterkontakte ist er im Laufe des Jahres auf ca. 140 MB angewachsen.
Event-on-change ist schon mal ein guter Ansatz.
Unabhängig von der Diskussion um regexp kannst Du auch ein tägliches Log-File erstellen:
Z2_BME280_FileLog_3-%Y-%m-%d.log
und dann noch die Anzahl der Log-Files begrenzen auf z.B. 6 Log-Files
attr Z2_BME280_FileLog_3 nrarchive 5

Edit:
Was interessiert der state der Fensterkontakte vor 10 Monaten??