How does json logging workΒΆ
You can turn JSON, or structured, logging on by setting
CORDITE_LOG_MODE=json
in the docker environment variables. If you do
this, beware of a few things:
- each log line is a flat JSON object with strings mapping to strings
- the severities are mapped on to stack driver severity levels
- MDC properties tip up as entries in the JSON object
- you can put as many
[key=value]
bits in your log message and each one will be stripped out of the message and will show up in the JSON object - Jolokia agent is serving on port 7005 unless JVM_ARGS are over-ridden
You might well be asking why on earth we want to do this. A number of reasons:
- in this way we can get Stackdriver and other JSON based monitoring solution not to interpret every message as INFO level!
- we can use the MDC for tracking requests across the entire cluster that we are monitoring - perhaps using session id, or some other discrim like txnId
- we can mark up various log messages as having certain types - we can then use this to slice and dice the messages - in particular we could figure out how much time we spend in certain blocks, or how often we call a method, but across a whole cluster, or within a certain type of transaction.