code: protected static void log(Level level, Object message, Throwable throwable, Object... args) {
  		Message payload = payload(message, args, throwable);
  		payload.getFormattedMessage(); // preformat message (cached), so formating has processed and added fields to MetaContext
  		if (MetaContext.hasMeta()) {
  			// serialize metacontext map to json, which is put into a designated threadcontext field
  			ThreadContext.put(JSON_FIELD, MetaContext.toJson());
  			MetaContext.clear();
  		}
  		determineLogger().log(level, payload, payload.getThrowable());
  		if (ThreadContext.getContext() != null && ThreadContext.containsKey(JSON_FIELD)) {
  			ThreadContext.remove(JSON_FIELD);
  		}
  	}
docs: -------------------------------- logging --------------------------------