Logging Level in openHAB 3 Regeln setzen zum Debuggen
Eiko WagenknechtWenn 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.
Inhaltsverzeichnis
- Schreiben von Logging-Statements in Regeln (DSL)
- Beispiel
- Setzen des Loglevels
- Zurücksetzen des Loglevels
- Anzeigen des aktuellen Loglevels
- Schlusswort
Schreiben von Logging-Statements in Regeln (DSL)
Wenn du die DSL-Sprache (der Standard in openHAB 2, auch in openHAB 3 noch immer viel genutzt) zum Schreiben von Regeln verwendest, kannst du 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 du <scriptname>
durch einen Wert deiner Wahl. Dieser Wert ist besonders wichtig, denn du kannst 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 du das Level nun verändern möchtest (z.B. auch „Debug” loggen), verbindest du dich mit der openHAB Karaf-Konsole und führst 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 Reihenfolge, 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 deine Kommentare, ob dir dieser Beitrag weitergeholfen hat. Schreib auch gerne, wenn du Fragen hast oder etwas unklar geblieben ist. Oder wenn du aufbauend darauf spannende weitere Automatisierungs-Projekte umsetzen konntest!
Keine Kommentare? Kein Problem.
Dieser Blog unterstützt keine Kommentare, aber deine Gedanken und Fragen sind immer willkommen. Du erreichst mich mich über die Kontaktdaten im Footer unten.
Unterstützung
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 weitere Möglichkeiten.