Logging in openHAB

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Logging in openHAB

Beitrag von Cyrelian »

Hallo zusammen,

so, nachdem mich das Thema mit dem logging in openHAB schon einige Zeit beschäftigt, ich aber bisher zu faul war es umzusetzen, habe ich mich jetzt mal drangesetzt.
Mit einer der Gründe, warum ich mich mal dem Thema angenommen, ist folgender:

Code: Alles auswählen

var boolean log = true
if (log) logInfo(filename, logPrefix + "Rollladen werden geoeffnet")
Wer meine Rules hier im Forum gesehen hat, der wird fast in allen o.g Code Zeilen finden.
An dieser Stelle nochmal Danke an udo1toni, der nicht müde geworden ist, zurecht diese „nicht saubere“ Programmierung, mit sehr guten Beispielen zu kommentieren.

Ich habe zum einen die config des log4j2 angepasst und zum anderen die Frontail config (Text highlighting im Log). Die entsprechenden config files findet ihr im file system unter:

Code: Alles auswählen

/var/lib/openhab2/etc/org.ops4j.pax.logging.cfg (log4j2)
/etc/systemd/system/ frontail.service (frontail)
/usr/lib/node_modules/frontail/preset/openhab.json (frontail)
Der Logger log4j2:
Dieser mächtige Logger bietet unter anderem die Option, beliebig viele Logger anzulegen, auf die entsprechenden Bedürfnisse zu konfigurieren und zur Laufzeit zu steuern, was geloggt wird.
Die Original org.ops4j.pax.logging.cfg (openHAB 2.5) sieht so aus:

Default

Code: Alles auswählen

# Common pattern layout for appenders
#log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n

# Root logger
log4j2.rootLogger.level = WARN
log4j2.rootLogger.appenderRefs = out, osgi
log4j2.rootLogger.appenderRef.out.ref = LOGFILE
log4j2.rootLogger.appenderRef.osgi.ref = OSGI

# Karaf Shell logger
log4j2.logger.shell.name = org.apache.karaf.shell.support
log4j2.logger.shell.level = OFF
log4j2.logger.shell.appenderRefs = stdout
log4j2.logger.shell.appenderRef.stdout.ref = STDOUT

# Security audit logger
log4j2.logger.audit.name = org.apache.karaf.jaas.modules.audit
log4j2.logger.audit.level = INFO
log4j2.logger.audit.additivity = false
log4j2.logger.audit.appenderRefs = audit
log4j2.logger.audit.appenderRef.audit.ref = AUDIT

# openHAB specific logger configuration

log4j2.logger.openhab.name = org.openhab
log4j2.logger.openhab.level = INFO

log4j2.logger.smarthome.name = org.eclipse.smarthome
log4j2.logger.smarthome.level = INFO

log4j2.logger.smarthomeItemStateEvent.name = smarthome.event.ItemStateEvent
log4j2.logger.smarthomeItemStateEvent.level = ERROR
log4j2.logger.smarthomeItemAddedEvent.name = smarthome.event.ItemAddedEvent
log4j2.logger.smarthomeItemAddedEvent.level = ERROR
log4j2.logger.smarthomeItemRemovedEvent.name = smarthome.event.ItemRemovedEvent
log4j2.logger.smarthomeItemRemovedEvent.level = ERROR
log4j2.logger.smarthomeThingStatusInfoEvent.name = smarthome.event.ThingStatusInfoEvent
log4j2.logger.smarthomeThingStatusInfoEvent.level = ERROR
log4j2.logger.smarthomeThingAddedEvent.name = smarthome.event.ThingAddedEvent
log4j2.logger.smarthomeThingAddedEvent.level = ERROR
log4j2.logger.smarthomeThingRemovedEvent.name = smarthome.event.ThingRemovedEvent
log4j2.logger.smarthomeThingRemovedEvent.level = ERROR
log4j2.logger.smarthomeInboxUpdatedEvent.name = smarthome.event.InboxUpdatedEvent
log4j2.logger.smarthomeInboxUpdatedEvent.level = ERROR

log4j2.logger.events.name = smarthome.event
log4j2.logger.events.level = INFO
log4j2.logger.events.additivity = false
log4j2.logger.events.appenderRefs = event
log4j2.logger.events.appenderRef.event.ref = EVENT
log4j2.logger.events.appenderRef.osgi.ref = OSGI

log4j2.logger.jupnp.name = org.jupnp
log4j2.logger.jupnp.level = ERROR

log4j2.logger.jmdns.name = javax.jmdns
log4j2.logger.jmdns.level = ERROR

log4j2.logger.paperui.name = org.openhab.ui.paper
log4j2.logger.paperui.level = WARN
log4j2.logger.paperuiint.name = org.openhab.ui.paper.internal
log4j2.logger.paperuiint.level = INFO

# This suppresses all Maven download issues from the log when doing feature installations
# as we are logging errors ourselves in a nicer way anyhow.
log4j2.logger.paxurl.name = org.ops4j.pax.url.mvn.internal.AetherBasedResolver
log4j2.logger.paxurl.level = ERROR

# Filters known issues of pax-web (issue link to be added here).
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.paxweb.name = org.ops4j.pax.web.pax-web-runtime
log4j2.logger.paxweb.level = OFF

# Filters known issues of lsp4j, see
# https://github.com/eclipse/smarthome/issues/4639
# https://github.com/eclipse/smarthome/issues/4629
# https://github.com/eclipse/smarthome/issues/4643
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.lsp4j.name = org.eclipse.lsp4j
log4j2.logger.lsp4j.level = OFF

# Filters known issues of KarServiceImpl, see
# https://github.com/openhab/openhab-distro/issues/519#issuecomment-351944506
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.karservice.name = org.apache.karaf.kar.internal.KarServiceImpl
log4j2.logger.karservice.level = ERROR

# Filters warnings about unavailable ciphers when JCE is not installed, see
# https://github.com/openhab/openhab-distro/issues/999
log4j2.logger.sshutils.name = org.apache.karaf.shell.ssh.SshUtils
log4j2.logger.sshutils.level = ERROR

# Filters known issues of javax.mail, see
# https://github.com/openhab/openhab2-addons/issues/5530
log4j2.logger.javaxmail.name = javax.mail
log4j2.logger.javaxmail.level = ERROR

# Appenders configuration

# Console appender not used by default (see log4j2.rootLogger.appenderRefs)
log4j2.appender.console.type = Console
log4j2.appender.console.name = STDOUT
log4j2.appender.console.layout.type = PatternLayout
log4j2.appender.console.layout.pattern = %d{HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n

# Rolling file appender
log4j2.appender.out.type = RollingRandomAccessFile
log4j2.appender.out.name = LOGFILE
log4j2.appender.out.fileName = ${openhab.logdir}/openhab.log
log4j2.appender.out.filePattern = ${openhab.logdir}/openhab.log.%i
log4j2.appender.out.immediateFlush = true
log4j2.appender.out.append = true
log4j2.appender.out.layout.type = PatternLayout
log4j2.appender.out.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n
log4j2.appender.out.policies.type = Policies
log4j2.appender.out.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.out.policies.size.size = 16MB

# Event log appender
log4j2.appender.event.type = RollingRandomAccessFile
log4j2.appender.event.name = EVENT
log4j2.appender.event.fileName = ${openhab.logdir}/events.log
log4j2.appender.event.filePattern = ${openhab.logdir}/events.log.%i
log4j2.appender.event.immediateFlush = true
log4j2.appender.event.append = true
log4j2.appender.event.layout.type = PatternLayout
log4j2.appender.event.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-26.26c] - %m%n
log4j2.appender.event.policies.type = Policies
log4j2.appender.event.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.event.policies.size.size = 16MB

# Audit file appender
log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AUDIT
log4j2.appender.audit.fileName = ${openhab.logdir}/audit.log
log4j2.appender.audit.filePattern = ${openhab.logdir}/audit.log.%i
log4j2.appender.audit.append = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n
log4j2.appender.audit.policies.type = Policies
log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.audit.policies.size.size = 8MB

# OSGi appender
log4j2.appender.osgi.type = PaxOsgi
log4j2.appender.osgi.name = OSGI
log4j2.appender.osgi.filter = *
Mit dieser „default config“ wird sehr viel in die Logs geschrieben, was das Log schnell unübersichtlich macht. Für den Anfang aber sehr gut, da man nahezu alles im Log findet. Hat man das System aber dann mal soweit, dass es rund läuft, möchte man (zumindest ich) nicht mehr jeden ITEM oder GROUP change im Log sehen. Weiterhin bekannte Fehler/issues (Java exceptions usw.) ausblenden oder für einzelne Rule files ein separates Log file oder ein anderes Loglevel einstellen.

Hier nun meine angepasste org.ops4j.pax.logging.cfg.

Damit es etwas übersichtlicher wird, habe ich den angepassten Teilen immer

Code: Alles auswählen

# ----------------------Custom……..
vorrangestellt.

Code: Alles auswählen

# Common pattern layout for appenders
#log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n

# Root logger
log4j2.rootLogger.level = WARN
log4j2.rootLogger.appenderRefs = out, osgi
log4j2.rootLogger.appenderRef.out.ref = LOGFILE
log4j2.rootLogger.appenderRef.osgi.ref = OSGI

# Karaf Shell logger
log4j2.logger.shell.name = org.apache.karaf.shell.support
log4j2.logger.shell.level = OFF
log4j2.logger.shell.appenderRefs = stdout
log4j2.logger.shell.appenderRef.stdout.ref = STDOUT

# Security audit logger
log4j2.logger.audit.name = org.apache.karaf.jaas.modules.audit
log4j2.logger.audit.level = INFO
log4j2.logger.audit.additivity = false
log4j2.logger.audit.appenderRefs = audit
log4j2.logger.audit.appenderRef.audit.ref = AUDIT

# openHAB specific logger configuration

log4j2.logger.openhab.name = org.openhab
log4j2.logger.openhab.level = INFO

log4j2.logger.smarthome.name = org.eclipse.smarthome
log4j2.logger.smarthome.level = INFO

log4j2.logger.smarthomeItemStateEvent.name = smarthome.event.ItemStateEvent
log4j2.logger.smarthomeItemStateEvent.level = ERROR
log4j2.logger.smarthomeItemAddedEvent.name = smarthome.event.ItemAddedEvent
log4j2.logger.smarthomeItemAddedEvent.level = ERROR
log4j2.logger.smarthomeItemRemovedEvent.name = smarthome.event.ItemRemovedEvent
log4j2.logger.smarthomeItemRemovedEvent.level = ERROR
log4j2.logger.smarthomeThingStatusInfoEvent.name = smarthome.event.ThingStatusInfoEvent
log4j2.logger.smarthomeThingStatusInfoEvent.level = ERROR
log4j2.logger.smarthomeThingAddedEvent.name = smarthome.event.ThingAddedEvent
log4j2.logger.smarthomeThingAddedEvent.level = ERROR
log4j2.logger.smarthomeThingRemovedEvent.name = smarthome.event.ThingRemovedEvent
log4j2.logger.smarthomeThingRemovedEvent.level = ERROR
log4j2.logger.smarthomeInboxUpdatedEvent.name = smarthome.event.InboxUpdatedEvent
log4j2.logger.smarthomeInboxUpdatedEvent.level = ERROR

# ----------------------Custom Log Levels (Events & Bindings)----------------------
# Custom Log Levels (Events)
log4j2.logger.smarthomeChannelTriggeredEvent.name = smarthome.event.ChannelTriggeredEvent
log4j2.logger.smarthomeChannelTriggeredEvent.level = INFO
log4j2.logger.smarthomeConfigStatusInfoEvent.name = smarthome.event.ConfigStatusInfoEvent
log4j2.logger.smarthomeConfigStatusInfoEvent.level = WARN
log4j2.logger.smarthomeExtensionEvent.name = smarthome.event.ExtensionEvent
log4j2.logger.smarthomeExtensionEvent.level = WARN
log4j2.logger.smarthomeGroupItemStateChangedEvent.name = smarthome.event.GroupItemStateChangedEvent
log4j2.logger.smarthomeGroupItemStateChangedEvent.level = WARN
log4j2.logger.smarthomeInboxAddedEvent.name = smarthome.event.InboxAddedEvent
log4j2.logger.smarthomeInboxAddedEvent.level = WARN
log4j2.logger.smarthomeInboxRemovedEvent.name = smarthome.event.InboxRemovedEvent
log4j2.logger.smarthomeInboxRemovedEvent.level = WARN
log4j2.logger.smarthomeItemChannelLinkAddedEvent.name = smarthome.event.ItemChannelLinkAddedEvent
log4j2.logger.smarthomeItemChannelLinkAddedEvent.level = WARN
log4j2.logger.smarthomeItemChannelLinkRemovedEvent.name = smarthome.event.ItemChannelLinkRemovedEvent
log4j2.logger.smarthomeItemChannelLinkRemovedEvent.level = WARN
log4j2.logger.smarthomeItemCommandEvent.name = smarthome.event.ItemCommandEvent
log4j2.logger.smarthomeItemCommandEvent.level = INFO
log4j2.logger.smarthomeItemStatePredictedEvent.name = smarthome.event.ItemStatePredictedEvent
log4j2.logger.smarthomeItemStatePredictedEvent.level = INFO
log4j2.logger.smarthomeItemStateChangedEvent.name = smarthome.event.ItemStateChangedEvent
log4j2.logger.smarthomeItemStateChangedEvent.level = WARN
log4j2.logger.smarthomeThingStatusInfoChangedEvent.name = smarthome.event.ThingStatusInfoChangedEvent
log4j2.logger.smarthomeThingStatusInfoChangedEvent.level = INFO
log4j2.logger.smarthomeThingUpdatedEvent.name = smarthome.event.ThingUpdatedEvent
log4j2.logger.smarthomeThingUpdatedEvent.level = WARN
 # An I/O error has occurred while writing a response message entity to the container output stream, see
 # https://github.com/openhab/openhab-distro/issues/587
log4j2.logger.ioError1.name = org.glassfish.jersey.server.ServerRuntime$Responder
log4j2.logger.ioError1.level = OFF
log4j2.logger.ioError2.name = org.glassfish.jersey.server.internal.process.MappableException
log4j2.logger.ioError2.level = OFF
log4j2.logger.ioError3.name = org.eclipse.jetty.io.EofException
log4j2.logger.ioError3.level = OFF

# Custom Log Levels (Bindings)
log4j2.logger.org_openhab_binding_mqtt.name = org.openhab.binding.mqtt
log4j2.logger.org_openhab_binding_mqtt.level = WARN
log4j2.logger.org_openhab_binding_ntp.name = org.openhab.binding.ntp
log4j2.logger.org_openhab_binding_ntp.level = WARN
log4j2.logger.org_openhab_binding_unifi.name = org.openhab.binding.unifi
log4j2.logger.org_openhab_binding_unifi.level = WARN
log4j2.logger.org_openhab_binding_weather.name = org.openhab.binding.weather
log4j2.logger.org_openhab_binding_weather.level = WARN
log4j2.logger.org_openhab_persistence_influxdb.name = org.openhab.persistence.influxdb
log4j2.logger.org_openhab_persistence_influxdb.level = WARN
log4j2.logger.org_openhab_binding_samsungtv.name = org.openhab.binding.samsungtv
log4j2.logger.org_openhab_binding_samsungtv.level = WARN
log4j2.logger.org_openhab_io_homekit.name = org.openhab.io.homekit
log4j2.logger.org_openhab_io_homekit.level = WARN
log4j2.logger.org_openhab_io_transport_mqtt.name = org.openhab.io.transport.mqtt
log4j2.logger.org_openhab_io_transport_mqtt.level = WARN
log4j2.logger.org_openhab_ui_paperui.name = org.openhab.ui.paperui
log4j2.logger.org_openhab_ui_paperui.level = WARN
log4j2.logger.org_openhab_ui_basicui.name = org.openhab.ui.basicui
log4j2.logger.org_openhab_ui_basicui.level = WARN
log4j2.logger.smarthome_ui_paper.name = smarthome.ui.paper
log4j2.logger.smarthome_ui_paper.level = WARN
log4j2.logger.smarthome_ui_basic.name = smarthome.ui.basic
log4j2.logger.smarthome_ui_basic.level = WARN
log4j2.logger.smarthome_transform_jsonpath.name = smarthome.transform.jsonpath
log4j2.logger.smarthome_transform_jsonpath.level = WARN
log4j2.logger.smarthome_transform_map.name = smarthome.transform.map
log4j2.logger.smarthome_transform_map.level = WARN
log4j2.logger.smarthome_transform_regex.name = smarthome.transform.regex
log4j2.logger.smarthome_transform_regex.level = WARN

log4j2.logger.events.name = smarthome.event
log4j2.logger.events.level = INFO
log4j2.logger.events.additivity = false
log4j2.logger.events.appenderRefs = event
log4j2.logger.events.appenderRef.event.ref = EVENT
log4j2.logger.events.appenderRef.osgi.ref = OSGI

log4j2.logger.jupnp.name = org.jupnp
log4j2.logger.jupnp.level = ERROR

log4j2.logger.jmdns.name = javax.jmdns
log4j2.logger.jmdns.level = ERROR

log4j2.logger.paperui.name = org.openhab.ui.paper
log4j2.logger.paperui.level = WARN
log4j2.logger.paperuiint.name = org.openhab.ui.paper.internal
log4j2.logger.paperuiint.level = INFO

# This suppresses all Maven download issues from the log when doing feature installations
# as we are logging errors ourselves in a nicer way anyhow.
log4j2.logger.paxurl.name = org.ops4j.pax.url.mvn.internal.AetherBasedResolver
log4j2.logger.paxurl.level = ERROR

# Filters known issues of pax-web (issue link to be added here).
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.paxweb.name = org.ops4j.pax.web.pax-web-runtime
log4j2.logger.paxweb.level = OFF

# Filters known issues of lsp4j, see
# https://github.com/eclipse/smarthome/issues/4639
# https://github.com/eclipse/smarthome/issues/4629
# https://github.com/eclipse/smarthome/issues/4643
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.lsp4j.name = org.eclipse.lsp4j
log4j2.logger.lsp4j.level = OFF

# Filters known issues of KarServiceImpl, see
# https://github.com/openhab/openhab-distro/issues/519#issuecomment-351944506
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.karservice.name = org.apache.karaf.kar.internal.KarServiceImpl
log4j2.logger.karservice.level = ERROR

# Filters warnings about unavailable ciphers when JCE is not installed, see
# https://github.com/openhab/openhab-distro/issues/999
log4j2.logger.sshutils.name = org.apache.karaf.shell.ssh.SshUtils
log4j2.logger.sshutils.level = ERROR

# Filters known issues of javax.mail, see
# https://github.com/openhab/openhab2-addons/issues/5530
log4j2.logger.javaxmail.name = javax.mail
log4j2.logger.javaxmail.level = ERROR

# Appenders configuration

# Console appender not used by default (see log4j2.rootLogger.appenderRefs)
log4j2.appender.console.type = Console
log4j2.appender.console.name = STDOUT
log4j2.appender.console.layout.type = PatternLayout
log4j2.appender.console.layout.pattern = %d{HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n

# Rolling file appender
log4j2.appender.out.type = RollingRandomAccessFile
log4j2.appender.out.name = LOGFILE
log4j2.appender.out.fileName = ${openhab.logdir}/openhab.log
log4j2.appender.out.filePattern = ${openhab.logdir}/openhab.log.%i
log4j2.appender.out.immediateFlush = true
log4j2.appender.out.append = true
log4j2.appender.out.layout.type = PatternLayout
log4j2.appender.out.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
log4j2.appender.out.policies.type = Policies
log4j2.appender.out.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.out.policies.size.size = 16MB

# Event log appender
log4j2.appender.event.type = RollingRandomAccessFile
log4j2.appender.event.name = EVENT
log4j2.appender.event.fileName = ${openhab.logdir}/events.log
log4j2.appender.event.filePattern = ${openhab.logdir}/events.log.%i
log4j2.appender.event.immediateFlush = true
log4j2.appender.event.append = true
log4j2.appender.event.layout.type = PatternLayout
log4j2.appender.event.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-40.40c] - %m%n
log4j2.appender.event.policies.type = Policies
log4j2.appender.event.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.event.policies.size.size = 16MB

# Audit file appender
log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AUDIT
log4j2.appender.audit.fileName = ${openhab.logdir}/audit.log
log4j2.appender.audit.filePattern = ${openhab.logdir}/audit.log.%i
log4j2.appender.audit.append = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
log4j2.appender.audit.policies.type = Policies
log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.audit.policies.size.size = 8MB

# OSGi appender
log4j2.appender.osgi.type = PaxOsgi
log4j2.appender.osgi.name = OSGI
log4j2.appender.osgi.filter = *

# ----------------------Custom Loggers (Rules)----------------------

# Default Rules files logger
log4j2.logger.rules.name = org.eclipse.smarthome.model.script.rules
log4j2.logger.rules.level = INFO
log4j2.logger.rules.additivity = false
log4j2.logger.rules.appenderRefs = rules
log4j2.logger.rules.appenderRef.stdout.ref = RULES

# Log level for individual rules files
#log4j2.logger.debugRules.name = org.eclipse.smarthome.model.script.rules.debug
#log4j2.logger.debugRules.level = DEBUG
#log4j2.logger.traceRules.name = org.eclipse.smarthome.model.script.rules.trace
#log4j2.logger.traceRules.level = TRACE
#log4j2.logger.timersRules.name = org.eclipse.smarthome.model.script.rules.timers
#log4j2.logger.timersRules.level = DEBUG

# iCloud Logger (Rules)
#log4j2.logger.iCloudRules.name = org.eclipse.smarthome.model.script.icloud
#log4j2.logger.iCloudRules.level = INFO
#log4j2.logger.iCloudRules.additivity = false
#log4j2.logger.iCloudRules.appenderRefs = iCloud
#log4j2.logger.iCloudRules.appenderRef.iCloud.ref = ICLOUD

# Sonos Logger (Rules)
#log4j2.logger.sonosRules.name = org.eclipse.smarthome.model.script.sonos
#log4j2.logger.sonosRules.level = INFO
#log4j2.logger.sonosRules.additivity = false
#log4j2.logger.sonosRules.appenderRefs = Sonos
#log4j2.logger.sonosRules.appenderRef.Sonos.ref = SONOS

# Astro Logger (Rules)
#log4j2.logger.astroRules.name = org.eclipse.smarthome.model.script.sstro
#log4j2.logger.astroRules.level = INFO
#log4j2.logger.astroRules.additivity = false
#log4j2.logger.astroRules.appenderRefs = Astro
#log4j2.logger.astroRules.appenderRef.Astro.ref = ASTRO

# ----------------------Custom Loggers (Bindings)----------------------
# Custom Loggers for individual bindings

# # Sonos Logger (Binding)
# log4j2.logger.sonosBinding.name = org.eclipse.smarthome.binding.sonos
# log4j2.logger.sonosBinding.level = INFO
# log4j2.logger.sonosBinding.additivity = false
# log4j2.logger.sonosBinding.appenderRefs = Sonos
# log4j2.logger.sonosBinding.appenderRef.Sonos.ref = SONOS

# # Astro Logger (Binding)
# log4j2.logger.astroBinding.name = org.openhab.binding.astro
# log4j2.logger.astroBinding.level = INFO
# log4j2.logger.astroBinding.additivity = false
# log4j2.logger.astroBinding.appenderRefs = Astro
# log4j2.logger.astroBinding.appenderRef.Astro.ref = ASTRO

# # iCloud Logger (Binding)
# log4j2.logger.iCloudBinding.name = org.openhab.binding.icloud
# log4j2.logger.iCloudBinding.level = INFO
# log4j2.logger.iCloudBinding.additivity = false
# log4j2.logger.iCloudBinding.appenderRefs = iCloud
# log4j2.logger.iCloudBinding.appenderRef.iCloud.ref = ICLOUD

# ----------------------Custom Appenders Configuration----------------------
# Custom Appenders

# Rules file appender
log4j2.appender.Sonos.name = RULES
log4j2.appender.Sonos.type = RollingRandomAccessFile
log4j2.appender.Sonos.fileName = ${openhab.logdir}/rules.log
log4j2.appender.Sonos.filePattern = ${openhab.logdir}/rules.log.%i
log4j2.appender.Sonos.immediateFlush = true
log4j2.appender.Sonos.append = true
log4j2.appender.Sonos.layout.type = PatternLayout
log4j2.appender.Sonos.layout.pattern = %d{dd-MMM-yyyy HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
log4j2.appender.Sonos.policies.type = Policies
log4j2.appender.Sonos.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.Sonos.policies.size.size = 10MB
log4j2.appender.Sonos.strategy.type = DefaultRolloverStrategy
log4j2.appender.Sonos.strategy.max = 10

log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AUDIT
log4j2.appender.audit.fileName = ${openhab.logdir}/audit.log
log4j2.appender.audit.filePattern = ${openhab.logdir}/audit.log.%i
log4j2.appender.audit.append = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
log4j2.appender.audit.policies.type = Policies
log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.audit.policies.size.size = 8MB

# # Sonos File appender - Sonos.log
# log4j2.appender.Sonos.name = SONOS
# log4j2.appender.Sonos.type = RollingRandomAccessFile
# log4j2.appender.Sonos.fileName = ${openhab.logdir}/sonos.log
# log4j2.appender.Sonos.filePattern = ${openhab.logdir}/sonos.log.%i
# log4j2.appender.Sonos.immediateFlush = true
# log4j2.appender.Sonos.append = true
# log4j2.appender.Sonos.layout.type = PatternLayout
# log4j2.appender.Sonos.layout.pattern = %d{dd-MMM-yyyy HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
# log4j2.appender.Sonos.policies.type = Policies
# log4j2.appender.Sonos.policies.size.type = SizeBasedTriggeringPolicy
# log4j2.appender.Sonos.policies.size.size = 10MB
# log4j2.appender.Sonos.strategy.type = DefaultRolloverStrategy
# log4j2.appender.Sonos.strategy.max = 10


# # Astro File Appender - Astro.log
# log4j2.appender.Astro.name = ASTRO
# log4j2.appender.Astro.type = RollingRandomAccessFile
# log4j2.appender.Astro.fileName = ${openhab.logdir}/astro.log
# log4j2.appender.Astro.filePattern = ${openhab.logdir}/astro.log.%i
# log4j2.appender.Astro.immediateFlush = true
# log4j2.appender.Astro.append = true
# log4j2.appender.Astro.layout.type = PatternLayout
# log4j2.appender.Astro.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
# log4j2.appender.Astro.policies.type = Policies
# log4j2.appender.Astro.policies.size.type = SizeBasedTriggeringPolicy
# log4j2.appender.Astro.policies.size.size = 10MB
# log4j2.appender.Astro.strategy.type = DefaultRolloverStrategy
# log4j2.appender.Astro.strategy.max = 10


# # iCloud File Appender - iCloud.log
# log4j2.appender.iCloud.name = ICLOUD
# log4j2.appender.iCloud.type = RollingRandomAccessFile
# log4j2.appender.iCloud.fileName = ${openhab.logdir}/iCloud.log
# log4j2.appender.iCloud.filePattern = ${openhab.logdir}/iCloud.log.%i
# log4j2.appender.iCloud.immediateFlush = true
# log4j2.appender.iCloud.append = true
# log4j2.appender.iCloud.layout.type = PatternLayout
# log4j2.appender.iCloud.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-40.40c] - %m%n
# log4j2.appender.iCloud.policies.type = Policies
# log4j2.appender.iCloud.policies.size.type = SizeBasedTriggeringPolicy
# log4j2.appender.iCloud.policies.size.size = 10MB
# log4j2.appender.iCloud.strategy.type = DefaultRolloverStrategy
# log4j2.appender.iCloud.strategy.max = 10
Das Ergebnis dieser Anpassungen können wir nun in der KARAF Console bewundern und unserer logging von dort aus ganz granular steuern.
logger.PNG
An die KARAF Console kommt ihr über den Befehl

Code: Alles auswählen

ssh -p 8101 openhab@localhost
Die aktuellen Einstellungen für die einzelnen Logger (Loglevel) können wir uns nun mit dem Befehl

Code: Alles auswählen

log:list	
anschauen.

Damit unsere logeinträge auch richtig zugewiesen werden, müssen wir jetzt noch die rules anpassen.

Code: Alles auswählen

logInfo("rules", logPrefix + "Aktuelle Bewoelkung ({}) ueberschreitet den eingestellten Grenzwert von ({})", OW_localCurrentCloudiness.state, AutoShading_Cloudiness_max.state)
Mit

Code: Alles auswählen

logInfo("rules".....
geben wir den Logger an, der angewendet werden soll, der wiederum den entsprechenden appender anspricht.

Nachdem unser Logger nun sauber in die logfiles event.log, rules.log und openhab.log schreibt, widme ich mich nun frontail.

Der Frontail Service:
Bei frontail müssen wir nun zwei config files anpassen. Zum einen die frontail.service, in der wir das neue logfile rules.log eintragen und zum anderen die openhab.json, in der wir das Text highlighting umsetzen.

Die angepasste frontail.service sieht dann so aus:

Code: Alles auswählen

[Unit]
Description=Frontail openHAB instance, reachable at http://%H:9001
Documentation=https://github.com/mthenw/frontail
Documentation=https://github.com/openhab/openhabian/issues/28
After=openhab2.service

[Service]
Type=simple
ExecStart=/usr/lib/node_modules/frontail/bin/frontail --ui-highlight --ui-highlight-preset /usr/lib/node_modules/frontail/preset/openhab.json -t openhab -l 2000 -n 400 /var/log/openhab2/openhab.log /var/log/openhab2/events.log /var/log/openhab2/rules.log
Restart=always
User=openhab
Group=openhab
Environment=PATH=/usr/bin/
Environment=NODE_ENV=production
WorkingDirectory=/usr/bin/

[Install]
WantedBy=multi-user.target
Wer es im Log etwas bunter mag wie ich, der kann sich in der openhab.json austoben.

Hier mal meine angepasste openhab.json:

Code: Alles auswählen

{
  "words": {
    "[ERROR]": "color: red;",
    "[WARN ]": "color: orange;",
    "[INFO ]": "color: green;",
    "Node is DEAD": "color: red;",
    "[GroupItemStateChangedEvent]": "color: #0026FF;",
    "[ItemStateChangedEvent     ]": "color: #0026FF;",
    "[ItemCommandEvent          ]": "color: #0026FF; font-weight: bold;",
    "[hingStatusInfoChangedEvent]": "color: #007F46;",
    "received command ON": "color: black;",
    "received command OFF": "color: black;",
    "received command": "color: black;"
  },
  "lines": {
    "/var/log/openhab2/openhab.log": "text-align: left; font-size: 0.8em; border-top: 2px solid #F8F8F8;",
    "/var/log/openhab2/events.log": "text-align: left; font-size: 0.8em; border-top: 2px solid #F8F8F8;",
    "/var/log/openhab2/rules.log": "text-align: left; font-size: 0.8em; border-top: 2px solid #F8F8F8;",
    "ERROR": "background-color: #F3BFBF;",
    "model.script": "background-color: #A6CFFD; font-weight: bold;",
    "ItemCommandEvent": "background-color: #10E710; font-weight: bold;"
  }
}
Soviel erstmal zum Thema logging in openHAB. Wie immer hoffe ich, dass dient dem einen oder anderen von euch als kleiner Denkanstoß oder Inspiration.

CYA
Cyrelian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Logging im openHAB

Beitrag von udo1toni »

Sehr schönes Howto!
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Logging im openHAB

Beitrag von Cyrelian »

udo1toni hat geschrieben: 29. Jan 2020 10:49 Sehr sdchönes Howto!
Dank Dir :D

eric1905
Beiträge: 13
Registriert: 14. Apr 2020 12:40

Re: Logging in openHAB

Beitrag von eric1905 »

Hat das schon jemand in OH3 zum laufen gebraucht? Hier wird ja nicht mehr die properties datei genutzt sondern xml.

Habe folgenden appender erstellt:

<!-- Rule file appender -->
<RollingRandomAccessFile fileName="${sys:openhab.logdir}/rules.log" filePattern="${sys:openhab.logdir}/rules.log.%i" name="RULES">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="16 MB"/>
</Policies>
</RollingRandomAccessFile>


und noch den logger unter Loggers eingefügt:
<Logger level="INFO" name="org.openhab.core.model.script.rules">
<AppenderRef ref="RULES"/>
</Logger>


Aber das klappt nicht. Muss ich sonst noch was tun. Stimmt der Package name evtl nicht?

eric1905
Beiträge: 13
Registriert: 14. Apr 2020 12:40

Re: Logging in openHAB

Beitrag von eric1905 »

Nutzt hier noch keiner dieses Logging mit Openhab3?

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Logging in openHAB

Beitrag von Cyrelian »

Hi,

hab seit heute erst OH3. Passe die Tage das logging mal an und poste dann ein Update.

CU
Cyrelian

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Logging in openHAB

Beitrag von Cyrelian »

UPDATE

Hallo zusammen,

hier wie versprochen das Update des Loggings auf openHAB 3. Die log4j2.xml ist "fast" analog zur alten org.ops4j.pax.logging.cfg

ACHTUNG!!!
Mit der u.g config wird es sehr sehr still in euren Log-Files. Wer also gerade noch am ausprobieren, testen oder mitten im Umstieg ist, sollte die Config so nicht verwenden, bzw. die Config verwenden, aber via Karaf Console wie im ersten Post beschrieben, die Log_level wieder nach oben schrauben.

log4j2.xml:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Configuration>

	<Appenders>
		<!-- Console appender not used by default (see Root logger AppenderRefs) -->
		<Console name="STDOUT">
			<PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
		</Console>

		<!-- Rolling file appender -->
		<RollingFile fileName="${sys:openhab.logdir}/openhab.log" filePattern="${sys:openhab.logdir}/openhab.log.%i" name="LOGFILE">
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
			<Policies>
				<OnStartupTriggeringPolicy/>
				<SizeBasedTriggeringPolicy size="16 MB"/>
			</Policies>
		</RollingFile>

		<!-- Event log appender -->
		<RollingRandomAccessFile fileName="${sys:openhab.logdir}/events.log" filePattern="${sys:openhab.logdir}/events.log.%i" 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>
		</RollingRandomAccessFile>

		<!-- Audit file appender -->
		<RollingRandomAccessFile fileName="${sys:openhab.logdir}/audit.log" filePattern="${sys:openhab.logdir}/audit.log.%i" name="AUDIT">
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
			<Policies>
				<OnStartupTriggeringPolicy/>
				<SizeBasedTriggeringPolicy size="8 MB"/>
			</Policies>
		</RollingRandomAccessFile>

		<!-- Rules file appender -->
		<RollingRandomAccessFile fileName="${sys:openhab.logdir}/rules.log" filePattern="${sys:openhab.logdir}/rules.log.%i" name="RULES">
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
			<Policies>
				<OnStartupTriggeringPolicy/>
				<SizeBasedTriggeringPolicy size="16 MB"/>
			</Policies>
		</RollingRandomAccessFile>

		<!-- OSGi appender -->
		<PaxOsgi filter="*" name="OSGI"/>
	</Appenders>

	<Loggers>
		<!-- Root logger configuration -->
		<Root level="WARN">
			<AppenderRef ref="LOGFILE"/>
			<AppenderRef ref="OSGI"/>
		</Root>

		<!-- Karaf Shell logger -->
		<Logger level="OFF" name="org.apache.karaf.shell.support">
			<AppenderRef ref="STDOUT"/>
		</Logger>

		<!-- Security audit logger -->
		<Logger additivity="false" level="INFO" name="org.apache.karaf.jaas.modules.audit">
			<AppenderRef ref="AUDIT"/>
		</Logger>

		<!-- Custom RULES logger -->
		<Logger additivity="false" level="INFO" name="org.openhab.core.model.script.rules">
			<AppenderRef ref="RULES"/>
		</Logger>
		
		<!-- openHAB specific logger configuration -->

		<Logger level="INFO" name="org.openhab"/>

		<Logger level="ERROR" name="openhab.event.ItemStateEvent"/>
		<Logger level="ERROR" name="openhab.event.ItemAddedEvent"/>
		<Logger level="ERROR" name="openhab.event.ItemRemovedEvent"/>
		<Logger level="ERROR" name="openhab.event.ItemChannelLinkAddedEvent"/>
		<Logger level="ERROR" name="openhab.event.ItemChannelLinkRemovedEvent"/>
		<Logger level="ERROR" name="openhab.event.ThingStatusInfoEvent"/>
		<Logger level="ERROR" name="openhab.event.ThingAddedEvent"/>
		<Logger level="ERROR" name="openhab.event.ThingUpdatedEvent"/>
		<Logger level="ERROR" name="openhab.event.ThingRemovedEvent"/>
		<Logger level="ERROR" name="openhab.event.InboxUpdatedEvent"/>
		<Logger level="ERROR" name="openhab.event.RuleStatusInfoEvent"/>
		<Logger level="ERROR" name="openhab.event.RuleAddedEvent"/>
		<Logger level="ERROR" name="openhab.event.RuleRemovedEvent"/>
		<Logger level="ERROR" name="openhab.event.StartlevelEvent"/>
		<Logger level="ERROR" name="openhab.event.AddonEvent"/>

		<!-- openHAB Custom logger configuration -->

		<Logger level="INFO" name="openhab.event.ChannelTriggeredEvent"/>
		<Logger level="WARN" name="openhab.event.ConfigStatusInfoEvent"/>
		<Logger level="WARN" name="openhab.event.ExtensionEvent"/>
		<Logger level="WARN" name="openhab.event.GroupItemStateChangedEvent"/>
		<Logger level="WARN" name="openhab.event.InboxAddedEvent"/>
		<Logger level="WARN" name="openhab.event.InboxRemovedEvent"/>
		<Logger level="WARN" name="openhab.event.ItemChannelLinkAddedEvent"/>
		<Logger level="WARN" name="openhab.event.ItemChannelLinkRemovedEvent"/>
		<Logger level="INFO" name="openhab.event.ItemCommandEvent"/>
		<Logger level="INFO" name="openhab.event.ItemStatePredictedEvent"/>
		<Logger level="WARN" name="openhab.event.ItemStateChangedEvent"/>
		<Logger level="INFO" name="openhab.event.ThingStatusInfoChangedEvent"/>
		<Logger level="WARN" name="openhab.event.ThingUpdatedEvent"/>
		
		<Logger additivity="false" level="INFO" name="openhab.event">
			<AppenderRef ref="EVENT"/>
			<AppenderRef ref="OSGI"/>
		</Logger>

		<Logger level="ERROR" name="javax.jmdns"/>
		<Logger level="ERROR" name="org.jupnp"/>

		<!-- This suppresses all Maven download issues from the log when doing feature installations -->
		<!-- as we are logging errors ourselves in a nicer way anyhow. -->
		<Logger level="ERROR" name="org.ops4j.pax.url.mvn.internal.AetherBasedResolver"/>

		<!-- Filters known issues of pax-web (issue link to be added here). -->
		<!-- Can be removed once the issues are resolved in an upcoming version. -->
		<Logger level="OFF" name="org.ops4j.pax.web.pax-web-runtime"/>

		<!-- Filters known issues of lsp4j, see -->
		<!-- https://github.com/eclipse/smarthome/issues/4639 -->
		<!-- https://github.com/eclipse/smarthome/issues/4629 -->
		<!-- https://github.com/eclipse/smarthome/issues/4643 -->
		<!-- Can be removed once the issues are resolved in an upcoming version. -->
		<Logger level="OFF" name="org.eclipse.lsp4j"/>

		<!-- Filters warnings for events that could not be delivered to a disconnected client. -->
		<Logger level="ERROR" name="org.apache.cxf.jaxrs.sse.SseEventSinkImpl"/>

		<!-- Filters known issues of KarServiceImpl, see -->
		<!-- https://github.com/openhab/openhab-distro/issues/519#issuecomment-351944506 -->
		<!-- Can be removed once the issues are resolved in an upcoming version. -->
		<Logger level="ERROR" name="org.apache.karaf.kar.internal.KarServiceImpl"/>

		<!-- Filters warnings about unavailable ciphers when JCE is not installed, see -->
		<!-- https://github.com/openhab/openhab-distro/issues/999 -->
		<Logger level="ERROR" name="org.apache.karaf.shell.ssh.SshUtils"/>

		<!-- Filters known issues of javax.mail, see -->
		<!-- https://github.com/openhab/openhab-addons/issues/5530 -->
		<Logger level="ERROR" name="javax.mail"/>

		<!-- Added by Karaf to prevent debug logging loops, see -->
		<!-- https://issues.apache.org/jira/browse/KARAF-5559 -->
		<Logger level="WARN" name="org.apache.sshd"/>
	</Loggers>

</Configuration>
frontail.service:

Code: Alles auswählen

[Unit]
Description=Frontail openHAB instance, reachable at http://%H:9001
Documentation=https://github.com/mthenw/frontail
After=openhab.service
PartOf=openhab.service

[Service]
Type=simple
ExecStart=/usr/lib/node_modules/frontail/bin/frontail --ui-highlight --ui-highlight-preset /usr/lib/node_modules/frontail/preset/openhab.json -t openhab -l 2000 -n 400 /var/log/openhab/openhab.log /var/log/openhab/events.log /var/log/openhab/rules.log
Restart=always
User=frontail
Group=openhab
Environment=PATH=/usr/bin/
Environment=NODE_ENV=production
WorkingDirectory=/usr/bin/

[Install]
WantedBy=multi-user.target
openhab.json:

Code: Alles auswählen

{
  "words": {
    "[ERROR]": "color: red;",
    "[WARN ]": "color: orange;",
    "[INFO ]": "color: green;",
    "Node is DEAD": "color: red;",
    "[GroupItemStateChangedEvent]": "color: #0026FF;",
    "[ItemStateChangedEvent     ]": "color: #0026FF;",
    "[ItemCommandEvent          ]": "color: #0026FF; font-weight: bold;",
    "[hingStatusInfoChangedEvent]": "color: #007F46;",
    "received command ON": "color: black;",
    "received command OFF": "color: black;",
    "received command": "color: black;"
  },
  "lines": {
    "/var/log/openhab/openhab.log": "text-align: left; font-size: 0.8em; border-top: 2px solid #F8F8F8;",
    "/var/log/openhab/events.log": "text-align: left; font-size: 0.8em; border-top: 2px solid #F8F8F8;",
    "/var/log/openhab/rules.log": "text-align: left; font-size: 0.8em; border-top: 2px solid #F8F8F8;",
    "ERROR": "background-color: #F3BFBF;",
    "model.script": "background-color: #A6CFFD; font-weight: bold;",
    "ItemCommandEvent": "background-color: #10E710; font-weight: bold;"
  }
}
Das Ganze sollte dann wieder so aussehen:

Bildschirmfoto 2020-12-31 um 17.25.54.png

Zwei Fehler die derzeit noch im Log auftauschen sind:

Code: Alles auswählen

[ERROR] [rg.apache.cxf.jaxrs.utils.JAXRSUtils] - Problem with writing the data, class org.openhab.core.io.rest.sitemap.internal.PageDTO, ContentType: application/json
[WARN ] [ache.cxf.phase.PhaseInterceptorChain] - Interceptor for {http://internal.id.core.openhab.org/}UUIDResource has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Closed
Dazu gibt es im GITHUB bereits einen Issue und die Empfehlung von Kai Kreuzer dazu ist:
I'd tend to say that the best fix is to simply suppress the warn/error log in such a case - as it seems to be normal that iOS simply cuts of connections when going to sleep.
Also habe ich die über die Karaf Console wie folgt ausgeblendet/unterdrückt:

Code: Alles auswählen

log:set off org.apache.cxf.jaxrs.utils.JAXRSUtils

Code: Alles auswählen

log:set error org.apache.cxf.phase.PhaseInterceptorChain
Also dann...happy logging :mrgreen:
CYA
Cyrelian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

MrCrashy
Beiträge: 113
Registriert: 2. Jan 2021 09:53

Re: Logging in openHAB

Beitrag von MrCrashy »

Guten Abend. Ich habe mir dein HowTo angeschaut und muss sagen, dass ich genau nach sowas gebraucht habe! Ich habe deine Einstellung übernommen und etwas nach meinen belieben angepasst. Zum Beispiel wollte ich ein Log alleine für die Beleuchtung haben. Diese sollte eigentlich in dem "lighting" - Log abgespeichert werden. Diese Log-Datei wurde auch automatisch erstellt.
Mein Command sieht so aus:

Code: Alles auswählen

logInfo("lighting", "Kinomodus wurde ohne Licht gestartet.")
Komischerweise wird es trotzdem noch in meinem openhab-Log gespeichert. Die "lighting"-Datei bleibt leer.

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

Re: Logging in openHAB

Beitrag von udo1toni »

Was hast Du denn genau konfiguriert? Gewöhnlich kannst Du nicht bestimmte Rule Logs in unterschiedliche Dateien lenken. Die oben gezeigte Konfiguration kann das Logging eines bestimmten Bindings in eine extra Datei umlenken.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

MrCrashy
Beiträge: 113
Registriert: 2. Jan 2021 09:53

Re: Logging in openHAB

Beitrag von MrCrashy »

Naja, Konfiguriert habe ich nicht viel. Habe quasi versucht alles von dem "Rule" - Log auf einen "lightning"-Log zu zu übertragen. Also in der .cfg die Konfiguration von dem "Rule" - Log auf ein Lightning Log erweitert.

Aber so leicht scheint es dann doch nicht zu funktionieren.

Antworten