final AggregatedLogData logData = new AggregatedLogData(); logData.setLevel(AggregatedLogLevel.FULL); boolean error = false; try { // .. execute code here } catch (Exception e) { logData.collectException("Failed to process rules", e); error = true; } finally { if (error) { logData.setLevel(AggregatedLogLevel.EXHAUSTIVE); // print all on error log.error(logData.toJsonString()); } else { log.info(logData.toJsonString()); } }