Payload and logging
A Payload interface is used for implementing a TrackerPayload and SelfDescribingJson, but accordingly, can be used to implement your own Payload class if you choose.
Tracker Payload
A TrackerPayload is used internally within the Java Tracker to create the tracking event payloads that are passed to an Emitter to be sent accordingly. It is essentially a wrapper around a LinkedHashMap<String, String>
and does basic validation to ensure all key-value pairs are valid non-null and non-empty Strings.
SelfDescribingJson
A SelfDescribingJson is used primarily to ease construction of self-describing JSON objects. It is a wrapper around a LinkedHashMap<String, Object>
and will only ever contain two key-value pairs. A schema
key with a valid schema value and a data
key containing a Map
of key-value pairs.
This is used under the hood but is also useful for to know about when attaching custom contexts to events or creating Unstructured
events.
Here's a short example:
// This is the Map we have created
Map<String, String> eventData = new HashMap<>();
eventData.put("Event", "Data")
// We wrap that map in a SelfDescribingJson before sending it
SelfDescribingJson json = new SelfDescribingJson("iglu:com.acme/example/jsonschema/1-0-0", eventData);
Logging
Logging in the Tracker is done using SLF4J. The majority of the logging set as DEBUG
so it will not overly populate your own logging.
Since Java tracker v0.11, user-supplied values are only logged at DEBUG
level.