event.log - Bestimmte Items vom Log ausschließen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
AndreM
Beiträge: 6
Registriert: 21. Jan 2024 19:32
Answers: 0

event.log - Bestimmte Items vom Log ausschließen

Beitrag 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
von udo1toni » 15. Feb 2024 11:59
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...
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 13986
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: event.log - Bestimmte Items vom Log ausschließen

Beitrag 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...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: event.log - Bestimmte Items vom Log ausschließen

Beitrag von peter-pan »

Welche Oberfläche benutzt du denn ? In der OH-GUI (Main-UI) gibt es ein Standard-Widget dafür.

Code: Alles auswählen

component: oh-clock-card
config: {}
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
udo1toni
Beiträge: 13986
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: event.log - Bestimmte Items vom Log ausschließen

Beitrag 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).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: event.log - Bestimmte Items vom Log ausschließen

Beitrag 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).
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Antworten