Event logging deaktivieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

kaloschke
Beiträge: 193
Registriert: 29. Jan 2019 07:20
Answers: 0

Event logging deaktivieren

Beitrag von kaloschke »

Hallo,

mein OH läuft auf einem Raspberry und da halte ich es nicht für sinnvoll, andauernd für mich unnötige Daten darauf zu schreiben.
Daher möchte ich - am liebsten vollständig - das Eventlogging abstellen.
Ich bin daher wie hier https://www.openhab.org/docs/administra ... onfig-file beschrieben vorgegangen und habe z.B. ItemChangeState-Events und ganze Bindings abgestellt. Leider - auch nach Neustarts - ohne jeglichen Erfolg. Die von mir vorgenommenen Änderungen sind jedoch in der Datei log4j2.xml eingetragen.
Mir ist auch nicht klar, ob die Einstellungen das openhab.log und / oder das event.log betreffen. Die Einträge in Ersterem möchte ich nach wie sehen.
Gibt es eine Möglichkeit, das Anlegen von event.log vollständig zu verhindern?

Viele Grüße

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

Re: Event logging deaktivieren

Beitrag von udo1toni »

Welche Version des Raspberry?
Welches Betriebssystem?
Welche Version von openHAB?
Wie wurde openHAB aufgesetzt?

Wenn du (Standard) das Raspberry Pi OS Image mit openHABian nimmst, wird automatisch ZRAM mit installiert. Damit landen die Schreibzugriffe nicht auf der SD-Karte.

log4j2 kümmert sich um das gesamte Logging. Es gibt nur verschiedene Appender, die dafür sorgen, dass bestimmte Ereignisse in der events.log landen und andere in der openhab.log. Insbesondere landen Fehlermeldungen in der openhab.log (außerdem auch alle selbst erstellten log-Befehle in Rules), alle Events auf dem Event-Bus landen hingegen in der events.log.

Wenn Du unbedingt auf das Logging verzichten willst, kannst Du das am bequemsten über die Karaf Konsole erreichen. log:list liefert Dir alle konfigurierten Logger, du musst dann lediglich alle nicht auf OFF gesetzten Logger auf OFF setzen, per log:set OFF <loggername>.
In der Liste muss das anschließend auch sichtbar sein, sonst hast Du einen Fehler gemacht.
Das Setzen eines Log Levels wirkt unmittelbar und ist persistent (es sei denn, man hat an den Dateirechten herumgeschraubt und openHAB kann die Änderungen nicht in die log4j2.xml schreiben).

Du kannst auch in der xml-Datei in Zeile 82 (bezogen auf die Originaldatei) Die Zeile

Code: Alles auswählen

<AppenderRef ref="EVENT"/>
löschen, damit wird dann nichts mehr in die Datei geschrieben, sondern nur noch in die OSGI Konsole. Die Zeile sollte nur einmal in der Datei vorkommen, insofern ist die Zeilennummer vielleicht nicht sooo wichtig. Du kannst die Zeile auch mit <!-- --> auskommentieren, falls Du das Ganze später wieder rückgängig machen willst (es stehen einige Kommentare in der Datei...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 193
Registriert: 29. Jan 2019 07:20
Answers: 0

Re: Event logging deaktivieren

Beitrag von kaloschke »

Hallo,
ich fange mal von hinten an:

a) Perfekt :-) . Das hatte ich gesucht. Ich hatte es früher schon so gemacht, aber vergessen, wie es geht.

b) log:set OFF ect: Das ist das Vorgehen wie in den Docs beschrieben. Dazu hatte ich oben bemerkt, dass es bei mir nicht funktioniert, warum auch immer.

c) Infos: Wie immer vergesse ich die Sachen gern, von denen ich meine, sie wären nicht wichtig :-(

Jedenfalls - Ziel erreicht.

Vielen Dank mal wieder!

kaloschke
Beiträge: 193
Registriert: 29. Jan 2019 07:20
Answers: 0

Re: Event logging deaktivieren

Beitrag von kaloschke »

Doch mal wieder ein paar Fragen zum Logging.
Bei mir läuft OH 4.0.3 in einem Docker-Container auf einem RPi4.

Ich habe zwei Bindings "deconz" und "openweathermap", die extrem viele Einträge in der event.log erzeugen.
Wenn ich nun in der Karaf Konsole diese beiden mit

Code: Alles auswählen

log:set OFF org.openhab.binding.*
abschalte oder auf WARN schalte, wird mir dies auf mit log:list auch so bestätigt.

Jedoch hat dies ÜBERHAUPT keine Wirkung auf mein event.log. Nach wie vor wird alles angezeigt.
Verstehe ich da etwas falsch?

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

Re: Event logging deaktivieren

Beitrag von udo1toni »

Es gibt keinen Loggernamen org.openhab.binding.*
Insbesondere gibt es an dieser Stelle keine Joker :)

Wenn Du alle Logger für Bindings auf WARN stellen willst, lautet der Befehl dafür

Code: Alles auswählen

log:set OFF org.openhab.binding
Wobei alle Bindings, die Du separat auf einen anderen Loglevel gesetzt hast, davon unberührt bleiben.
Du setzt also das Loglevel für den übergeordneten Loggernamen. Alle untergeordneten Logger, deren Loglevel nicht explizit gesetzt ist, erben dann die Einstellung.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 193
Registriert: 29. Jan 2019 07:20
Answers: 0

Re: Event logging deaktivieren

Beitrag von kaloschke »

Das Sternchen steht für die von mir genannten beiden Bindings deconz und openweathermaps :D .
Mein Problem ist jedoch, dass dadurch die Anzeigeflut in events.log nicht eingeschränkt wird.
Oder gelten die Einstellungen auf der Konsole nur für das Logging in der Konsole?

In meiner log4j2.xml steht jedenfalls jetzt am Ende:

Code: Alles auswählen

<Logger level="OFF" name="deCONZ"/>
<Logger level="OFF" name="openweather"/>
<Logger level="OFF" name="org.openhab.binding.deconz"/>
<Logger level="OFF" name="org.openhab.binding.openweathermap"/>
Das interpretiere ich so, dass diese Bindings fürs Logging abgeschaltet werden. Sehe ich das richtig so?
Mein Ziel wäre jedenfalls erreicht.

Leider wird nach einem Neustart fröhlich weiter geloggt :( .

Ich habe dann in der Datei noch

Code: Alles auswählen

<Logger level="ERROR" name="openhab.event.ItemStateChangedEvent"/>
<Logger level="ERROR" name="openhab.event.ThingStatusInfoChangedEvent"/>
eingefügt, weil diese "Ereignisklassen" die meisten Ereignisse erzeugen, mich meist aber nicht interessieren.

Das funktioniert!

fred07
Beiträge: 40
Registriert: 26. Aug 2022 16:40
Answers: 0

Re: Event logging deaktivieren

Beitrag von fred07 »

Ich habe das gleiche Problem, RPi5 mit OH 4, wenn ich über openhab-cli console einsteige und gem. Anleitung die Logs ändere, dann wird mir mit log:list die richtige Einstellung angezeigt, nur ändert sich genau nichts.

Das Bearbeiten der log4j2.xml funktioniert nicht, da ich in dieser Datei über WinSCP nichts speichern kann.

An was kann das liegen?

Ich würde gerne nur die Logs eines Bindings auf WARN setzen, da die ständigen Statusänderungen uninteressant sind.

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

Re: Event logging deaktivieren

Beitrag von udo1toni »

Unter OH4 kannst Du den Loglevel leicht direkt in der UI setzen (Einstellungen -> Add-on Settings -> <Addon> -> Add-on log settings).

Bitte nicht mittels WinSCP schreibend auf Dateien zugreifen (es sei denn, Du weißt sehr genau, was Du tust).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

fred07
Beiträge: 40
Registriert: 26. Aug 2022 16:40
Answers: 0

Re: Event logging deaktivieren

Beitrag von fred07 »

Danke für diesen Hinweis, hier steht der Log auf Warning, eigentlich so wie ich es will.
Trotzdem kommt jede Statusänderung durch (ItemStateChangedEvent). Ich will aber für die anderen Items die Statusmeldungen behalten, eben nur für dieses eine Bindung ´abdrehen´.

Danke auch für für den Hinweis mit WinSCP, werde ich unterlassen.

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

Re: Event logging deaktivieren

Beitrag von udo1toni »

Ah, vielleicht ist das das Problem... Der Loglevel bezieht sich immer auf das Modul, welches das Logging auslöst, hier also org.openhab.event.ItemStateChangedEvent, das hat nichts mit dem Addon zu tun.
Wenn Du an dieser Stelle einzelne Meldungen unterdrücken willst, musst Du einen Filter verwenden, das geht nur, indem Du direkt in der log4j2.xml den Filter definierst. Da muss man aber auch aufpassen, nicht zu viel wegzufiltern...

Ein typischer Filter wäre z.B.

Code: Alles auswählen

			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
			<RegexFilter regex=".*TempIs.*" onMatch="DENY" onMismatch="ACCEPT"/>
			<Policies>
wobei es nur um die mittlere Zeile geht, die beiden umgebenden Zeilen hier nur, damit klar ist, wo so ein Filter einzutragen ist.
Der Filter funktioniert mit einer RegularExpression. Es wird immer eine komplette Zeile betrachtet, entsprechend muss vorne und hinten jeweils ein .* stehen, dazwischen die matchende Zeichenfolgem hier also TempIs, und da onMatch auf DENY und onMismatch auf ACCEPT stehen, wird jede Logzeile entfernt, in der die Zeichenfolge TempIs vorkommt.

Wenn ein ACCEPT erreicht ist, wird die Zeile direkt ausgegeben, wenn ein DENY erreicht ist, wird die Zeile direkt verworfen.
Wenn man mehrere Bedingungen hintereinander abfragen möchte, muss man nach meinem Verständnis bei onMismatch ein NEUTRAL eintragen und dann eine weitere Filterzeile einfügen, kann aber sein, dass ich das falsch interpretiere :) ausprobiert habe ich das bisher noch nicht.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten