Time to tackle the logging topic. By default, openHAB logs to several logfiles in userdata/logs with alternating logging files. When you followed the first parts of this post series, you don’t expose log data to the outer world – but you somehow need to read the logs. Luckily, DSM includes the Log Center to gather all your logs in one place. In this post, you’ll learn how to redirect the logs.
First, some preparation. Create a directory in your preferred location. After this, open the Log Center from your applications and go the Archive Settings. Click Select Location and choose the directory you created before.
Setting the destination is a precondition for the receiving of logs. Go to Log Receiving and select the Create button in the top bar. Call this receiver openhab, select BSD format and use TCP protocol.
The Synology part is done, time for openHAB. In DSM, open File Station and navigate to userdata/etc. Download org.ops4j.pax.logging.cfg and open the file in the editor of your choice. Here you will find the loggers for openhab.log, events.log and audit.log. The appenders start with
log4j2.appender.out.type
or event or audit instead of out. Replace all three loggers with the following configuration.
# openhab.log
log4j2.appender.out.type = Socket
log4j2.appender.out.name = LOGFILE
log4j2.appender.out.host = 192.168.178.42
log4j2.appender.out.port = 514
log4j2.appender.out.protocol = TCP
log4j2.appender.out.immediateFlush = true
log4j2.appender.out.layout.type = PatternLayout
log4j2.appender.out.layout.pattern = <%level{TRACE=7, DEBUG=7, INFO=6, WARN=4, ERROR=3, Fatal=0}>%d{MMM dd HH:mm:ss} openHAB openhab.log %replace{%m}{\n}{\u2028}%n
# Event log appender
log4j2.appender.event.type = Socket
log4j2.appender.event.name = EVENT
log4j2.appender.event.host = 192.168.178.42
log4j2.appender.event.port = 514
log4j2.appender.event.protocol = TCP
log4j2.appender.event.immediateFlush = true
log4j2.appender.event.layout.type = PatternLayout
log4j2.appender.event.layout.pattern = <%level{TRACE=7, DEBUG=7, INFO=6, WARN=4, ERROR=3, Fatal=0}>%d{MMM dd HH:mm:ss} openHAB event.log %replace{%m}{\n}{\u2028}%n
# Audit file appender
log4j2.appender.audit.type = Socket
log4j2.appender.audit.name = AUDIT
log4j2.appender.audit.host = 192.168.178.42
log4j2.appender.audit.port = 514
log4j2.appender.audit.protocol = TCP
log4j2.appender.audit.immediateFlush = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = <%level{TRACE=7, DEBUG=7, INFO=6, WARN=4, ERROR=3, Fatal=0}>%d{MMM dd HH:mm:ss} openHAB audit.log %replace{%m}{\n}{\u2028}%n
Sources:
- BSD Format documentation (which is described in the PatternLayouts)
- Log4j documentation (fol the other parameters)
- Line break escaping (for multi line messages (except stack traces))
Just wait a few seconds and you should see the log entries in your Log Center. Now your openHAB won’t write to the disk but to the center. Here you can decide what to do with your logs.
Now openHAB is redirecting all the logs to your Log Center where you can do further actions. Just one more post in this series and your openHAB will run including backups.
Part 1: Use openHAB with Synology DSM
Part 2: MySQL persistence for openHAB
Part 3: Redirect openHAB logs to Log Center
Part 4: Scheduled database backups with DSM