Seite 1 von 1
event.log - Bestimmte Items vom Log ausschließen
Verfasst: 15. Feb 2024 07:03
von AndreM
Guten Morgen in die Runde,
Ich bin heute mal das Event.Log durchgegangen. Dabei ist mir aufgefallen das da jeder Sekunden einen Zeile im Log erzeugt wird.
Hintergrund ist, dass ich mir auf meinem Dashboard ein Widget gebaut habe, wass mir die aktuelle Uhrzeit anzeigt. Dieses Widget zieht sich die Zeit aus dem Netz... Problem ist, dass wenn die Uhrzeit abgeglichen wird immer eine Zeile im Log dafür erzeugt wird. Kann man bei einem Item irgendwie verhindern das die Updates ins Log eingetragen werden?
Code: Alles auswählen
2024-02-14 16:42:37.184 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Lokale_Zeit_Datum_und_Zeit' changed from 2024-02-14T16:42:36.159+0100 to 2024-02-14T16:42:37.184+0100
Re: event.log - Bestimmte Items vom Log ausschließen
Verfasst: 15. Feb 2024 11:59
von udo1toni
Es handelt sich hier ja nicht um ein reines Update, sondern um ein Item changed Event
Die Lösung für das Problem besteht in einem Filter, den Du allerdings "zu Fuß" in die betreffende xml-Datei einbauen musst.
Erklärt ist das hier:
https://community.openhab.org/t/openhab ... /38277/130.
Konkret öffnest Du in
$OPENHAB_USERDATA/etc/ die Datei
log4j2.xml, suchst den Abschnitt für den Event log appender - sollte so aussehen:
Code: Alles auswählen
<!-- Event log appender -->
<RollingRandomAccessFile fileName="${sys:openhab.logdir}/events.log" filePattern="${sys:openhab.logdir}/events.log.%i.gz" name="EVENT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="16 MB"/>
</Policies>
<DefaultRolloverStrategy max="7"/>
</RollingRandomAccessFile>
und ergänzt vor dem PatternLayout ein Regex Filter:
Code: Alles auswählen
<!-- Event log appender -->
<RollingRandomAccessFile fileName="${sys:openhab.logdir}/events.log" filePattern="${sys:openhab.logdir}/events.log.%i.gz" name="EVENT">
<!-- Regex Filter added below -->
<RegexFilter regex=".*localTime.*" onMatch="DENY" onMismatch="ACCEPT"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="16 MB"/>
</Policies>
<DefaultRolloverStrategy max="7"/>
</RollingRandomAccessFile>
Sobald Du die Datei speicherst, wird nun jede Zeile, in der die Buchstabenfolge
localTime vorkommt unterdrückt. Solche Filter sind aber mit Vorsicht zu genießen, denn man kann auch ungewollt zu viel unterdrücken und wundert sich dann, warum das Log plötzlich so leer ist...
Re: event.log - Bestimmte Items vom Log ausschließen
Verfasst: 15. Feb 2024 21:19
von peter-pan
Welche Oberfläche benutzt du denn ? In der OH-GUI (Main-UI) gibt es ein Standard-Widget dafür.
Re: event.log - Bestimmte Items vom Log ausschließen
Verfasst: 15. Feb 2024 21:24
von udo1toni
Wobei das Widget nicht mit einem Item verlinkt wird. Das Problem dabei: Man kann (meines Wissens) das Widget nicht dazu verwenden, eine Weltuhr zu bauen (also mehrere Zeitanzeigen, welche die Uhrzeit an verschiedenen Orten anzeigen).
Re: event.log - Bestimmte Items vom Log ausschließen
Verfasst: 15. Feb 2024 21:40
von peter-pan
. ..das ist allerdings richtig. Ich hab mal versucht selber so ein Widget zu bauen, bin aber nicht fertig geworden.

. Über 500 Zeilen Code, aber so richtig funktioniert es nicht.
weltzeit.jpg
Edit:
Die Zeit hole ich mir aus dem NTP-Binding/Thing/Item. Allerdings habe ich meine Events grundsätzlich auf "WARN" in der Karaf-Konsole gesetzt, da ich diese Vielfalt an Infos nicht brauche was sicher zugunsten der Lebensdauer der SD-Karte/SSD-Platte auswirkt (Ich nutze auch kein ZRAM).