Logging Level in openHAB 3 Regeln setzen zum Debuggen

Wenn eine Regel in openHAB 3 nicht richtig funktioniert, kann es helfen, zusätzliche Debugging Statements in der Regel zu setzen und das Loglevel zu erhöhen, um einen detaillierteren Einblick in den Fehler zu bekommen.

Schreiben von Logging Statements in Regeln (DSL)

Wenn ihr die DSL Sprache (der Standard in openHAB 2, auch in openHAB 3 noch immer viel genutzt) zum Schreiben von Regeln verwendet, könnt ihr die folgenden Befehle in der Regel nutzen, um Logausgaben zu erzeugen:

  • logError("<scriptname>", "<logtext>")
  • logWarn("<scriptname>", "<logtext>")
  • logInfo("<scriptname>", "<logtext>")
  • logDebug("<scriptname>", "<logtext>")

Hierbei ersetzt ihr <scriptname> durch einen Wert eurer Wahl. Dieser Wert ist gleich wichtig, denn ihr könnt das zu protokollierende Loglevel je Eintrag hier verändern.

In der Standardeinstellung wird alles bis „Info“ geloggt, also „Error“, „Warn“ und „Info“.

Beispiel

So könnte eine Regel mit Logging Statements aussehen:

rule "Lüftung - Items synchronisieren - Küche/Wohnen"

when
  Item EG_Wohnen_Lueftung_Automatik changed or
  Item EG_Kueche_Lueftung_Automatik changed

then
  logDebug("sync", "Synchronisiere Status von EG_Wohnen_Lueftung_Automatik und EG_Kueche_Lueftung_Automatik: " + newState)

if(EG_Wohnen_Lueftung_Automatik.state != newState) {
  logDebug("sync", "Setze EG_Wohnen_Lueftung_Automatik auf " + newState)
  EG_Wohnen_Lueftung_Automatik.sendCommand(newState.toString)
}

if(EG_Kueche_Lueftung_Automatik.state != newState) {
  logDebug("sync", "Setze EG_Kueche_Lueftung_Automatik auf " + newState)
  EG_Kueche_Lueftung_Automatik.sendCommand(newState.toString)
}

end

Setzen des Loglevels

Wenn ihr das Level nun verändern möchtet (z.B. auch „Debug“ loggen), verbindet ihr euch mit der openHAB Karaf Konsole und führt das Kommando

log:set <LEVEL> org.openhab.core.model.script.<scriptname>

aus. Beispielsweise also:

log:set DEBUG org.openhab.core.model.script.helloworld

Mögliche Werte für <LEVEL> sind dabei (in steigender Reigenfolge, entsprechend des Loglevels das maximal protokolliert werden soll):

  • OFF
  • ERROR
  • WARN
  • INFO
  • DEBUG

Zurücksetzen des Loglevels

Wenn alle Untersuchungen abgeschlossen sind, kann das Level mit

log:set DEFAULT org.openhab.core.model.script.<scriptname>

auf den Standard (Loggen bis INFO) zurückgesetzt werden oder z.B. mit

log:set OFF org.openhab.core.model.script.<scriptname>

komplett deaktiviert werden.

Anzeigen des aktuellen Loglevels

Alle aktuell eingestellten Level zeigt der Befehl

log:list

Schlusswort

Ich freue mich über eure Kommentare, ob euch der Beitrag weitergeholfen hat. Schreibt auch gerne, wenn ihr Fragen habt oder doch etwas unklar geblieben ist. Oder wenn ihr aufbauend darauf spannende weitere Automatisierungs-Projekte umsetzen konntet 🙂

Wenn diese Seite für dich hilfreich war und du dich bei mir bedanken möchtest, dann freue ich mich ganz außerordentlich darüber, wenn du für deinen nächsten Einkauf bei amazon.de über diesen Link gehst. Ich bekomme dann eine kleine Provision, für dich kostet es keinen Cent extra. Wenn du mich lieber anders unterstützen möchtest, findest du hier hier weitere Möglichkeiten.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.