Log Reader Binding

This binding reads and analyzes log files. Search patterns are fully configurable, therefore different kind of log files should be possible to monitor by this binding. When certain log events is recognized, openHAB rules can be used to send notification about the event e.g by email for further analysis.

Supported Things

This binding supports one ThingType: reader. A reader supports 3 separate channels; One for errors, one for warnings and one custom channel for other purposes.

Thing Configuration

The reader Thing has the following configuration parameters:

ParameterTypeRequiredDefault if omittedDescription
filePathStringyes${OPENHAB_LOGDIR}/openhab.logPath to log file. ${OPENHAB_LOGDIR} is automatically replaced by the correct directory.
refreshRateintegerno1000Time in milliseconds between individual log reads.
errorPatternsStringnoERROR+Search patterns separated by | character for warning events.
errorBlacklistingPatternsStringnoSearch patterns for blacklisting unwanted error events separated by | character.
warningPatternsStringnoWARN+Search patterns separated by | character for error events.
warningBlacklistingPatternsStringnoSearch patterns for blacklisting unwanted warning events separated by | character.
customPatternsStringnoSearch patterns separated by | character for custom events.
customBlacklistingPatternsStringnoSearch patterns for blacklisting unwanted custom events separated by | character.

Search patterns follows Java regular expression syntax. See https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html.

Channels

List of channels

Channel Type IDItem TypeDescription
lastErrorEventStringDisplays contents of last [ERROR] event
lastWarningEventStringDisplays contents of last [WARN] event
lastCustomEventStringDisplays contents of last custom event
errorEventsNumberDisplays number of [ERROR] lines matched to search pattern
warningEventsNumberDisplays number of [WARN] lines matched to search pattern
customEventsNumberDisplays number of custom lines matched to search pattern
logRotatedDateTimeLast time when log rotated recognized
newErrorEvent-Trigger channel for last [ERROR] line
newWarningEvent-Trigger channel for last [ERROR] line
newCustomEvent-Trigger channel for last [ERROR] line

Examples

example.things


logreader:reader:openhablog[ refreshRate=1000, errorPatterns="ERROR+", errorBlacklistingPatterns="annoying error which should ignored|Another annoying error which should ignored" ]

example.items


String   logreaderLastError         "Last error [%s]"                                      { channel="logreader:reader:openhablog:lastErrorEvent" }
String   logreaderLastWarning       "Last warning [%s]"                                    { channel="logreader:reader:openhablog:lastWarningEvent" }
Number   logreaderErrors            "Error events matched [%d]"                            { channel="logreader:reader:openhablog:errorEvents" }
Number   logreaderWarnings          "Warning events matched [%d]"                          { channel="logreader:reader:openhablog:warningEvents" }
DateTime logreaderLogRotated        "Last Log Rotation [%1$tY.%1$tm.%1$te %1$tR]"          { channel="logreader:reader:openhablog:logRotated" } 

example.sitemap


sitemap logreader_example label="Example" {
    Frame label="LogReader" {
        Text item=logreaderLastError
        Text item=logreaderLastWarning
        Text item=logreaderErrors
        Text item=logreaderWarnings
        Text item=logreaderLogRotated
    }
}

example.rules

rule "LogReader"
    when
        Channel "logreader:reader:openhablog:newErrorEvent" triggered
    then
        // do something
    end

Be careful when sending e.g. email notifications. You could easily send thousand of spam emails in short period if e.g. one binding is in error loop.

Thing status

Check thing status for errors.

Verbose logging

Enable DEBUG logging in karaf console to see more precise error messages:

log:set DEBUG org.openhab.binding.logreader

See openHAB2 logging docs for more help.