log
Prints a log event each time it processes a batch. Messages always remain unchanged. The log message can be set using function interpolations described here which allows you to log the contents and metadata of messages.
# Config fields, showing default valueslabel: ""log:level: INFOfields: {}fields_mapping: ""message: ""
In order to print a log message per message of a batch place it within a
for_each
processor.
For example, if we wished to create a debug log event for each message in a
pipeline in order to expose the JSON field foo.bar
as well as the
metadata field kafka_partition
we can achieve that with the
following config:
pipeline:processors:- for_each:- log:level: DEBUGmessage: 'field: ${! json("foo.bar") }, part: ${! meta("kafka_partition") }'
The level
field determines the log level of the printed events and
can be any of the following values: TRACE, DEBUG, INFO, WARN, ERROR.
Structured Fields​
It's also possible add custom fields to logs when the format is set to a structured form such as json
or logfmt
. The config field fields
allows you to provide a map of key/value string pairs, where the values support interpolation functions allowing you to extract message contents and metadata like this:
pipeline:processors:- log:level: DEBUGmessage: hello worldfields:reason: cus I wanaid: ${! json("id") }age: ${! json("user.age") }kafka_topic: ${! meta("kafka_topic") }
However, these values will always be output as string types. In cases where you want to add other types such as integers or booleans you can use the field fields_mapping
to define a Bloblang mapping that outputs a map of key/values like this:
pipeline:processors:- log:level: DEBUGmessage: hello worldfields_mapping: |root.reason = "cus I wana"root.id = this.idroot.age = this.user.ageroot.kafka_topic = meta("kafka_topic")
Fields​
level
​
The log level to use.
Type: string
Default: "INFO"
Options: FATAL
, ERROR
, WARN
, INFO
, DEBUG
, TRACE
, ALL
.
fields
​
A map of fields to print along with the log message. This field supports interpolation functions.
Type: object
Default: {}
fields_mapping
​
An optional Bloblang mapping that can be used to specify extra fields to add to the log. If log fields are also added with the fields
field then those values will override matching keys from this mapping.
Type: string
Default: ""
Requires version 3.40.0 or newer
# Examplesfields_mapping: |-root.reason = "cus I wana"root.id = this.idroot.age = this.user.age.number()root.kafka_topic = meta("kafka_topic")
message
​
The message to print. This field supports interpolation functions.
Type: string
Default: ""