- all Logging MUST be structured
- creation of logs MUST be compile-time-safe (no loosing logs due to e.g. Jackson runtime errors)
- log creation MUST be independent of log shipping - even in the app (allows for other shipping variants such as back-pressure integrated in streams)
- except for standard members supplied to all logs, all its members SHOULD be evident at the call site
- log serialization SHOULD be pluggable
- Interface with methods to create structured log
- Interface for serializing structured logs
- Interface for shipping serialized, structured logs