Macros of AxoSyslog
The following macros are available in AxoSyslog templates.
These macros are available when AxoSyslog successfully parses the incoming message as a syslog message, or you use some other parsing method and map the parsed values to these macros.
If you are using the flags(no-parse)
option, then syslog message parsing is completely disabled, and the entire incoming message is treated as the ${MESSAGE} part of a syslog message. In this case, AxoSyslog generates a new syslog header (timestamp, host, and so on) automatically. Note that even though flags(no-parse)
disables message parsing, some flags can still be used, for example, the no-multi-line
flag.
AMPM
Description: Typically used together with the ${HOUR12}
macro, ${AMPM}
returns the period of the day: AM for hours before mid day and PM for hours after mid day. In reference to a 24-hour clock format, AM is between 00:00-12:00 and PM is between 12:00-24:00. 12AM is midnight. Available in AxoSyslog 3.4 and later.
BSDTAG
Description: Facility/priority information in the format used by the FreeBSD syslogd: a priority number followed by a letter that indicates the facility. The priority number can range from 0
to 7
. The facility letter can range from A
to Y
, where A
corresponds to facility number zero (LOG_KERN), B
corresponds to facility 1 (LOG_USER), and so on.
Custom macros
Description: CSV parsers and pattern databases can also define macros from the content of the messages, for example, a pattern database rule can extract the username from a login message and create a macro that references the username. For details on using custom macros created with CSV parsers and pattern databases, see parser: Parse and segment structured messages and Using parser results in filters and templates, respectively.
DATE, C_DATE, R_DATE, S_DATE
Description: Date of the message using the BSD-syslog style timestamp format (month/day/hour/minute/second, each expressed in two digits). This is the original syslog time stamp without year information, for example: Jun 13 15:58:00
.
DAY, C_DAY, R_DAY, S_DAY
Description: The day the message was sent.
DESTIP
Description: When used, the output specifies the local IP address of the source from which the message originates.
For an example use case when using the macro is recommended, see Example use case: using the $DESTIP, the $DESTPORT, and the $PROTO macros.
DESTPORT
Description: When used, the output specifies the local port of the source from which the message originates.
For an example use case when using the macro is recommended, see Example use case: using the $DESTIP, the $DESTPORT, and the $PROTO macros.
FACILITY
Description: The name of the facility (for example, kern
) that sent the message.
FACILITY_NUM
Description: The numerical code of the facility (for example, 0
) that sent the message.
FILE_NAME
Description: Name of the log file (including its path) from where AxoSyslog received the message (only available if AxoSyslog received the message from a file or a wildcard-file source). If you need only the path or the filename, use the dirname and basename template functions.
FULLDATE, C_FULLDATE, R_FULLDATE, S_FULLDATE
Description: A nonstandard format for the date of the message using the same format as ${DATE}
, but including the year as well, for example: 2006 Jun 13 15:58:00
.
FULLHOST
Description: The name of the source host where the message originates from.
-
If the message traverses several hosts and the
chain-hostnames()
option is on, the first host in the chain is used. -
If the
keep-hostname()
option is disabled (keep-hostname(no)
), the value of the $FULLHOST macro will be the DNS hostname of the host that sent the message to AxoSyslog (that is, the DNS hostname of the last hop). In this case the $FULLHOST and $FULLHOST_FROM macros will have the same value. -
If the
keep-hostname()
option is enabled (keep-hostname(yes)
), the value of the $FULLHOST macro will be the hostname retrieved from the log message. That way the name of the original sender host can be used, even if there are log relays between the sender and the server.Note Theuse-dns()
,use-fqdn()
,normalize-hostnames()
, anddns-cache()
options will have no effect if thekeep-hostname()
option is enabled (keep-hostname(yes)
) and the message contains a hostname.
For details on using name resolution in AxoSyslog, see Using name resolution in syslog-ng.
FULLHOST_FROM
Description: The FQDN of the host that sent the message to AxoSyslog as resolved by AxoSyslog using DNS. If the message traverses several hosts, this is the last host in the chain.
The AxoSyslog application uses the following procedure to determine the value of the $FULLHOST_FROM
macro:
-
The AxoSyslog application takes the IP address of the host sending the message.
-
If the
use-dns()
option is enabled, AxoSyslog attempts to resolve the IP address to a hostname. If it succeeds, the returned hostname will be the value of the$FULLHOST_FROM
macro. This value will be the FQDN of the host if theuse-fqdn()
option is enabled, but only the hostname ifuse-fqdn()
is disabled. -
If the
use-dns()
option is disabled, or the address resolution fails, the${FULLHOST_FROM}
macro will return the IP address of the sender host.
For details on using name resolution in AxoSyslog, see Using name resolution in syslog-ng.
HOUR, C_HOUR, R_HOUR, S_HOUR
Description: The hour of day the message was sent.
HOUR12, C_HOUR12, R_HOUR12, S_HOUR12
Description: The hour of day the message was sent in 12-hour clock format. See also the ${AMPM}
macro. 12AM is midnight. Available in AxoSyslog 3.4 and later.
HOST
Description: The name of the source host where the message originates from.
-
If the message traverses several hosts and the
chain-hostnames()
option is on, the first host in the chain is used. -
If the
keep-hostname()
option is disabled (keep-hostname(no)
), the value of the $HOST macro will be the DNS hostname of the host that sent the message to AxoSyslog (that is, the DNS hostname of the last hop). In this case the $HOST and $HOST_FROM macros will have the same value. -
If the
keep-hostname()
option is enabled (keep-hostname(yes)
), the value of the $HOST macro will be the hostname retrieved from the log message. That way the name of the original sender host can be used, even if there are log relays between the sender and the server.Note Theuse-dns()
,use-fqdn()
,normalize-hostnames()
, anddns-cache()
options will have no effect if thekeep-hostname()
option is enabled (keep-hostname(yes)
) and the message contains a hostname.
For details on using name resolution in AxoSyslog, see Using name resolution in syslog-ng.
HOST_FROM
Description: The FQDN of the host that sent the message to AxoSyslog as resolved by AxoSyslog using DNS. If the message traverses several hosts, this is the last host in the chain.
The AxoSyslog application uses the following procedure to determine the value of the $HOST_FROM
macro:
-
The AxoSyslog application takes the IP address of the host sending the message.
-
If the
use-dns()
option is enabled, AxoSyslog attempts to resolve the IP address to a hostname. If it succeeds, the returned hostname will be the value of the$HOST_FROM
macro. This value will be the FQDN of the host if theuse-fqdn()
option is enabled, but only the hostname ifuse-fqdn()
is disabled. -
If the
use-dns()
option is disabled, or the address resolution fails, the${HOST_FROM}
macro will return the IP address of the sender host.
For details on using name resolution in AxoSyslog, see Using name resolution in syslog-ng.
IP-PROTO
Available in AxoSyslog version 4.5 and later.
The IP protocol version used to retrieve or receive the message. Contains either “4” to indicate IPv4 and “6” to indicate IPv6.
ISODATE, C_ISODATE, R_ISODATE, S_ISODATE
Description: Date of the message in the ISO 8601 compatible standard timestamp format (yyyy-mm-ddThh:mm:ss+-ZONE), for example: 2006-06-13T15:58:00.123+01:00
. If possible, it is recommended to use ${ISODATE}
for timestamping. Note that AxoSyslog can produce fractions of a second (for example, milliseconds) in the timestamp by using the frac-digits()
global or per-destination option.
frac-digits()
option is set to a value higher than 6, AxoSyslog will truncate the fraction seconds in the timestamps after 6 digits.
ISOWEEK, C_ISOWEEK, R_ISOWEEK, S_ISOWEEK
Description: The number of week according to the ISO 8601 standard. Note that the ${WEEK}
macro that has been available in returns a non-standard week number that can differ from the value returned by the ${ISOWEEK}
macro.
Available in 3.24 and later.
LEVEL_NUM
Description: The priority (also called severity) of the message, represented as a numeric value, for example, 3
. For the textual representation of this value, use the ${LEVEL}
macro. See PRIORITY or LEVEL for details.
LOGHOST
Description: The hostname of the computer running AxoSyslog.
-
In version 3.24 and later: the
${LOGHOST}
macro returns the fully-qualified domain name (FQDN) only if theuse-fqdn()
option is set to yes, and the hostname otherwise. -
In earlier versions: the
${LOGHOST}
macro returns the fully-qualified domain name (FQDN).
MESSAGE
Description: Text contents of the log message without the program name and pid. The program name and the pid together are available in the ${MSGHDR}
macro, and separately in the ${PROGRAM} and ${PID} macros.
If you are using the flags(no-parse)
option, then syslog message parsing is completely disabled, and the entire incoming message is treated as the ${MESSAGE} part of a syslog message. In this case, AxoSyslog generates a new syslog header (timestamp, host, and so on) automatically. Note that even though flags(no-parse)
disables message parsing, some flags can still be used, for example, the no-multi-line
flag.
The ${MSG}
macro is an alias of the ${MESSAGE}
macro: using ${MSG}
in AxoSyslog is equivalent to ${MESSAGE}.
Note that before AxoSyslog version 3.0, the ${MESSAGE}
macro included the program name and the pid. In AxoSyslog 3.0, the ${MESSAGE}
macro became equivalent with the ${MSGONLY}
macro.
MIN, C_MIN, R_MIN, S_MIN
Description: The minute the message was sent.
MONTH, C_MONTH, R_MONTH, S_MONTH
Description: The month the message was sent as a decimal value, prefixed with a zero if smaller than 10.
MONTH_ABBREV, C_MONTH_ABBREV, R_MONTH_ABBREV, S_MONTH_ABBREV
Description: The English abbreviation of the month name (3 letters).
MONTH_NAME, C_MONTH_NAME, R_MONTH_NAME, S_MONTH_NAME
Description: The English name of the month name.
MONTH_WEEK, C_MONTH_WEEK, R_MONTH_WEEK, S_MONTH_WEEK
Description: The number of the week in the given month (0-5). The week with numerical value 1 is the first week containing a Monday. The days of month before the first Monday are considered week 0. For example, if a 31-day month begins on a Sunday, then the 1st of the month is week 0, and the end of the month (the 30th and 31st) is week 5.
MSEC, C_MSEC, R_MSEC, S_MSEC
Description: The millisecond the message was sent.
Available in AxoSyslog version 3.4 and later.
MQTT_TOPIC
Description: The mqtt()
source automatically sets the ${MQTT_TOPIC}
name-value pair for the messages it receives. This is useful when the name of the topic contains MQTT wildcards ($
, +
, #
).
Available in AxoSyslog version 4.7 and later.
MSG
The ${MSG}
macro is an alias of the ${MESSAGE}
macro, using ${MSG}
in AxoSyslog is equivalent to ${MESSAGE}
. For details on this macro, see MESSAGE.
MSGHDR
Description: The name and the PID of the program that sent the log message in PROGRAM[PID]:
format. Includes a trailing whitespace. Note that the macro returns an empty value if both the PROGRAM and PID fields of the message are empty.
MSGFORMAT
Available in AxoSyslog version 4.8.1 and later.
Description: Stores the original format of the incoming message. Possible values:
linux:devkmsg
: Linux kernel message.linux:pacct
: Linux process accounting log format.raw
: AxoSyslog didn’t parse the message, for example, because theno-parse
flag was set.syslog:rfc3164
: Syslog message formatted as RFC3164.syslog:rfc5424
: Syslog message formatted as RFC5424.
MSGID
Description: A string specifying the type of the message in IETF-syslog (RFC5424-formatted) messages. For example, a firewall might use the ${MSGID}
“TCPIN” for incoming TCP traffic and the ${MSGID}
“TCPOUT” for outgoing TCP traffic. By default, AxoSyslog does not specify this value, but uses a dash (-) character instead. If an incoming message includes the ${MSGID}
value, it is retained and relayed without modification.
MSGONLY
Description: Message contents without the program name or pid. Starting with AxoSyslog 3.0, the following macros are equivalent: ${MSGONLY}
, ${MSG}
, ${MESSAGE}
. For consistency, use the ${MESSAGE}
macro. For details, see MESSAGE.
PID
Description: The PID of the program sending the message.
PRI
Description: The priority and facility encoded as a 2 or 3 digit decimal number as it is present in syslog messages.
PRIORITY or LEVEL
Description: The priority (also called severity) of the message, for example, error
. For the textual representation of this value, use the ${LEVEL}
macro. See PRIORITY or LEVEL for details.
PROGRAM
Description: The name of the program sending the message. Note that the content of the ${PROGRAM}
variable may not be completely trusted as it is provided by the client program that constructed the message.
PROTO
Description: When used, the output specifies the protocol used on the source from which the message originates.
For an example use case when using the macro is recommended, see Example use case: using the $DESTIP, the $DESTPORT, and the $PROTO macros.
RAWMSG
Description: The original message as received from the client. Note that this macro is available only in 3.16 and later, and only if AxoSyslog received the message using the default-network-drivers()
source, or the source receiving the message has the store-raw-message
flag set.
RAWMSG_SIZE
Available in AxoSyslog version 4.2 and newer.
Description: The original size of the incoming message in bytes. Might not be available for every source driver.
RCPTID
Description: When the use-rcptid
global option is set to yes
, AxoSyslog automatically assigns a unique reception ID to every received message. You can access this ID and use it in templates via the ${RCPTID}
macro. The reception ID is a monotonously increasing 48-bit integer number, that can never be zero (if the counter overflows, it restarts with 1).
RUNID
Description: An ID that changes its value every time AxoSyslog is restarted, but not when reloaded.
SDATA, .SDATA.SDID.SDNAME
Description: The AxoSyslog application automatically parses the STRUCTURED-DATA part of IETF-syslog messages, which can be referenced in macros. The ${SDATA}
macro references the entire STRUCTURED-DATA part of the message, while structured data elements can be referenced using the ${.SDATA.SDID.SDNAME}
macro.
When using STRUCTURED-DATA macros, consider the following:
- When referencing an element of the structured data, the macro must begin with the dot (.) character. For example,
${.SDATA.timeQuality.isSynced}
. - The SDID and SDNAME parts of the macro names are case sensitive:
${.SDATA.timeQuality.isSynced}
is not the same as${.SDATA.TIMEQUALITY.ISSYNCED}
.
Example: Using SDATA macros
For example, if a log message contains the following structured data: [exampleSDID@0 iut="3" eventSource="Application" eventID="1011"][examplePriority@0 class="high"]
you can use macros like: ${.SDATA.exampleSDID@0.eventSource}
— this would return the Application
string in this case.
SEC, C_SEC, R_SEC, S_SEC
Description: The second the message was sent.
SEQNUM
Description: The ${SEQNUM}
macro contains a sequence number for the log message. The value of the macro depends on the scenario, and can be one of the following:
-
If AxoSyslog receives a message via the IETF-syslog protocol that includes a sequence ID, this ID is automatically available in the
${SEQNUM}
macro. -
If the message is a Cisco IOS log message using the extended timestamp format, then AxoSyslog stores the sequence number from the message in this macro. If you forward this message the IETF-syslog protocol, AxoSyslog includes the sequence number received from the Cisco device in the
${.SDATA.meta.sequenceId}
part of the message.Note To enable sequence numbering of log messages on Cisco devices, use the following command on the device (available in IOS 10.0 and later):service sequence-numbers
. For details, see the manual of your Cisco device. -
For locally generated messages (that is, for messages that are received from a local source, and not from the network), AxoSyslog calculates a sequence number when sending the message to a destination (it is not calculated for relayed messages).
- The sequence number is not global, but per-destination. Essentially, it counts the number of messages sent to the destination.
- This sequence number increases by one for every message sent to the destination. It not lost when AxoSyslog is reloaded, but it is reset when AxoSyslog is restarted.
- This sequence number is added to every message that uses the IETF-syslog protocol (
${.SDATA.meta.sequenceId}
), and can be added to BSD-syslog messages using the${SEQNUM}
macro.
SOURCE
Description: The identifier of the source statement in the AxoSyslog configuration file that received the message. For example, if AxoSyslog received the log message from the source s_local { internal(); };
source statement, the value of the ${SOURCE} macro is s_local
. This macro is mainly useful for debugging and troubleshooting purposes.
SOURCEIP
Description: IP address of the host that sent the message to syslog-ng
. (That is, the IP address of the host in the ${FULLHOST_FROM}
macro.) Please note that when a message traverses several relays, this macro contains the IP of the last relay.
STAMP, R_STAMP, S_STAMP
Description: A timestamp formatted according to the ts-format()
global or per-destination option.
SYSUPTIME
Description: The time elapsed since the AxoSyslog instance was started (that is, the uptime of the AxoSyslog process). The value of this macro is an integer containing the time in 1/100th of the second.
Available in AxoSyslog version 3.4 and later.
TAG
Description: The priority and facility encoded as a 2 digit hexadecimal number.
TAGS
Description: A comma-separated list of the tags assigned to the message.
Note that the tags are not part of the log message and are not automatically transferred from a client to the server. For example, if a client uses a pattern database to tag the messages, the tags are not transferred to the server. A way of transferring the tags is to explicitly add them to the log messages using a template and the ${TAGS}
macro, or to add them to the structured metadata part of messages when using the IETF-syslog message format.
When sent as structured metadata, it is possible to reference to the list of tags on the central server, and for example, to add them to a database column.
TRANSPORT
Available in AxoSyslog version 4.5 and later.
AxoSyslog automatically populates this name-value pair with the “transport” mechanism used to retrieve or receive the message. The exact value depends on the source driver that received the message. Currently the following values are implemented:
-
BSD syslog drivers
tcp()
,udp()
&network()
rfc3164+tls
rfc3164+tcp
rfc3164+udp
rfc3164+proxied-tls
rfc3164+<custom logproto like altp>
-
UNIX domain drivers
unix-dgram()
,unix-stream()
unix-stream
unix-dgram
-
RFC5424-style syslog
syslog()
:rfc5426
: syslog over udprfc5425
: syslog over tlsrfc6587
: syslog over tcprfc5424+<custom logproto like altp>
: syslog over a logproto plugin
-
Other drivers:
otlp
:otel()
drivermqtt
:mqtt()
driverhypr-api
:hypr-audit-source()
driver
-
Locally created logs (in version 4.7 and newer):
local+unix-stream
local+unix-dgram
local+file
local+pipe
local+program
local+devkmsg
local+journal
local+afstreams
local+openbsd
TZ, C_TZ, R_TZ, S_TZ
Description: An alias of the ${TZOFFSET} macro.
TZOFFSET, C_TZOFFSET, R_TZOFFSET, S_TZOFFSET
Description: The time-zone as hour offset from GMT, for example: -07:00
. In version 1.6.x this used to be -0700
but as ${ISODATE}
requires the colon it was added to ${TZOFFSET}
as well.
UNIXTIME, C_UNIXTIME, R_UNIXTIME, S_UNIXTIME
Description: Standard UNIX timestamp, represented as the number of seconds since 1970-01-01T00:00:00
.
.tls.x509
Description: When using a transport that uses TLS, these macros contain information about the peer’s certificate. That way, you can use information from the client certificate in filenames, database values, or as other metadata. If you clients have their own certificates, then these values are unique per client, but unchangeable by the client. The following macros are available in AxoSyslog version 3.9 and later.
.tls.x509_cn
: The Common Name of the certificate..tls.x509_o
: The value of the Organization field..tls.x509_ou
: The value of the Organization Unit field..tls.x509_fp
: The key fingerprint of the peer, if thetrusted-keys()
option is used. Available in version 4.8.1 and later.
UNIQID
Description: A globally unique ID generated from the HOSTID and the RCPTID in the format of HOSTID@RCPTID. For details, see use-uniqid() and RCPTID.
Available in AxoSyslog version 3.7 and later.
USEC, C_USEC, R_USEC, S_USEC
Description: The microsecond the message was sent.
Available in AxoSyslog version 3.4 and later.
YEAR, C_YEAR, R_YEAR, S_YEAR
Description: The year the message was sent.
WEEK, C_WEEK, R_WEEK, S_WEEK
Description: The week number of the year, prefixed with a zero for the first nine weeks of the year. (The first Monday in the year marks the first week.)
See also ISOWEEK, C_ISOWEEK, R_ISOWEEK, S_ISOWEEK.
WEEK_DAY_ABBREV, C_WEEK_DAY_ABBREV, R_WEEK_DAY_ABBREV, S_WEEK_DAY_ABBREV
Description: The 3-letter English abbreviation of the name of the day the message was sent, for example, Thu
.
WEEK_DAY, C_WEEK_DAY, R_WEEK_DAY, S_WEEK_DAY
Description: The day of the week as a numerical value (1-7).
WEEKDAY, C_WEEKDAY, R_WEEKDAY, S_WEEKDAY
Description: These macros are deprecated, use ${WEEK_DAY_ABBREV}, ${R_WEEK_DAY_ABBREV}, ${S_WEEK_DAY_ABBREV} instead. The 3-letter name of the day of week the message was sent, for example, Thu
.
WEEK_DAY_NAME, C_WEEK_DAY_NAME, R_WEEK_DAY_NAME, S_WEEK_DAY_NAME
Description: The English name of the day.