# if you experience problems, check
# http://www.rsyslog.com/troubleshoot for assistance

# rsyslog v3: load input modules
# If you do not load inputs, nothing happens!
# You may need to set the module load path if modules are not found.
#
# Ported from debian's sysklogd.conf

# Preserve full-hostname
$PreserveFQDN on

# Journal-style logging
# Limit to no more than 2000 entries in one minute and enable the
# journal workaround to avoid duplicate entries
module(load="imjournal" StateFile="/var/log/state"
                        RateLimit.Interval="60"
                        RateLimit.Burst="2000")

# Template for Redfish messages
# "<timestamp> <MessageId>,<MessageArgs>"
template(name="IPMISELTemplate" type="list") {
    property(name="timereported" dateFormat="rfc3339")
    constant(value=" ")
    property(name="$!IPMISEL_MESSAGE_ID")
    constant(value=", ")
    property(name="$!IPMISEL_MESSAGE_ARGS")
    constant(value="\n")
}

# Template for Redfish messages
# "<timestamp> <MessageId>,<MessageArgs>"
template(name="RedfishTemplate" type="list") {
    property(name="timereported" dateFormat="rfc3339")
    constant(value=" ")
    property(name="$!REDFISH_MESSAGE_ID")
    constant(value=",")
    property(name="$!REDFISH_MESSAGE_ARGS")
    constant(value="\n")
}

# If the journal entry has a IPMI SEL MESSAGE_ID, save as IPMI SEL
if ($!IPMISEL_MESSAGE_ID != "") then {
   action(type="omfile" file="/var/log/ipmi_sel" template="IPMISELTemplate")
}

# If the journal entry has a Redfish MessageId, save as a Redfish event
if ($!REDFISH_MESSAGE_ID != "") then {
   action(type="omfile" file="/var/log/redfish" template="RedfishTemplate")
}

# At least one of the consoles will require streaming host console.
module(load="imfile")

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
