private String createJSON(LoggingEvent event) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Map<String, Object> log = new HashMap<>();
log.put("daemon", DaemonStarter.getDaemonName());
log.put("instance", DaemonStarter.getInstanceId());
log.put("host", DaemonStarter.getHostname());
log.put("phase", DaemonStarter.getCurrentPhase().name());
log.put("timestamp", sdf.format(new Date(event.getTimeStamp())));
log.put("level", event.getLevel().toString());
log.put("source", event.getLoggerName());
log.put("message", event.getRenderedMessage());
log.put("thread", event.getThreadName());
if (event.getThrowableInformation() != null) {
Throwable throwable = event.getThrowableInformation().getThrowable();
log.put("throwable", throwable.toString());
log.put("stacktrace", this.getStacktrace(throwable));
}
if (event.getProperties() != null) {
log.put("mdc", event.getProperties());
}
StringBuilder sb = new StringBuilder();
this.addObject(sb, log);
sb.append(Layout.LINE_SEP);
return sb.toString();
}