use of org.apache.sling.hc.api.ResultLog.Entry in project sling by apache.
the class ResultHtmlSerializer method serialize.
public String serialize(final Result overallResult, final List<HealthCheckExecutionResult> executionResults, String escapedHelpText, boolean includeDebug) {
StringWriter stringWriter = new StringWriter();
PrintWriter writer = new PrintWriter(stringWriter);
writer.println("<html><head><title>System Health</title>" + "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /><style>" + styleString + "</style></head><body><h1>System Health</h1>");
writer.println("<p><span class=\"" + getClassForStatus(overallResult.getStatus()) + "\"><strong>Overall Result: " + overallResult.getStatus() + "</strong></span></p>");
final DateFormat dfShort = new SimpleDateFormat("HH:mm:ss.SSS");
final DateFormat dfLong = new SimpleDateFormat("yyyy-MM-dd HH:mm");
writer.println("<table id=\"healthCheckResults\" cellspacing=\"0\">");
writer.println("<thead><tr><th>Health Check <span style='color:gray'>(tags)</span></th><th>Status</th><th>Log</th><th>Finished At</th><th>Time</th></tr></thead>");
for (HealthCheckExecutionResult executionResult : executionResults) {
Result result = executionResult.getHealthCheckResult();
List<String> tags = executionResult.getHealthCheckMetadata().getTags();
boolean hasTags = tags != null && tags.size() > 0 && StringUtils.isNotBlank(tags.get(0));
writer.print("<tr class=\"" + getClassForStatus(result.getStatus()) + "\">");
writer.print("<td><p title=\"" + StringEscapeUtils.escapeHtml(executionResult.getHealthCheckMetadata().getName()) + "\">" + StringEscapeUtils.escapeHtml(executionResult.getHealthCheckMetadata().getTitle()) + "");
if (hasTags) {
writer.println("<br/><span style='color:gray'>" + StringEscapeUtils.escapeHtml(StringUtils.join(tags, ", ")) + "</span>");
}
writer.println("</p></td>");
writer.println("<td style='font-weight:bold;'>" + StringEscapeUtils.escapeHtml(result.getStatus().toString()) + "</td>");
writer.println("<td>");
boolean isFirst = true;
boolean isSingleResult = isSingleResult(result);
for (Entry entry : result) {
if (!includeDebug && entry.getStatus() == Result.Status.DEBUG) {
continue;
}
if (isFirst) {
isFirst = false;
} else {
writer.println("<br/>\n");
}
boolean showStatus = !isSingleResult && entry.getStatus() != Result.Status.DEBUG && entry.getStatus() != Result.Status.INFO;
String message = StringEscapeUtils.escapeHtml(entry.getMessage());
if (entry.getStatus() == Result.Status.DEBUG) {
message = "<span style='color:gray'/>" + message + "</span>";
}
writer.println((showStatus ? StringEscapeUtils.escapeHtml(entry.getStatus().toString()) + " " : "") + message);
Exception exception = entry.getException();
if (exception != null) {
writer.println("<span style='width:20px'/>" + StringEscapeUtils.escapeHtml(exception.toString()));
writer.println("<!--");
exception.printStackTrace(writer);
writer.println("-->");
}
}
writer.println("</td>");
Date finishedAt = executionResult.getFinishedAt();
writer.println("<td>" + (isToday(finishedAt) ? dfShort.format(finishedAt) : dfLong.format(finishedAt)) + "</td>");
writer.println("<td>" + FormattingResultLog.msHumanReadable(executionResult.getElapsedTimeInMs()) + "</td>");
writer.println("</tr>");
}
writer.println("</table>");
writer.println("<div class='helpText'>");
writer.println(escapedHelpText);
writer.println("</div>");
writer.println("</body></html>");
return stringWriter.toString();
}
Aggregations