Improve Error reporting during build

Change-Id: I7d867eb3ab0b33210c21fd476008057c5428a508
Signed-off-by: Markus Duft <markus.duft@ssi-schaefer.com>
diff --git a/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/tasks/TaskBuildWorkspace.java b/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/tasks/TaskBuildWorkspace.java
index f977384..93c777e 100644
--- a/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/tasks/TaskBuildWorkspace.java
+++ b/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/tasks/TaskBuildWorkspace.java
@@ -53,12 +53,51 @@
 		IStatus result = chain.execute(tracker, config.failureThreshold);
 
 		if (result.getSeverity() > IStatus.WARNING) {
-			log.error("Errors during build: " + result);
+			log.error("Errors during build: " + formatStatus(result, ""));
+
 		}
 
 		return result;
 	}
 
+	private String formatStatus(IStatus status, String indent) {
+		StringBuilder builder = new StringBuilder();
+
+		builder.append(indent).append(formatSeverity(status.getSeverity())).append(": ");
+		if (status.getPlugin() != null) {
+			builder.append(status.getPlugin()).append(": ");
+		}
+		if (status.getCode() != 0) {
+			builder.append("code=").append(status.getCode()).append(": ");
+		}
+		builder.append(status.getMessage());
+		if (status.getException() != null) {
+			builder.append(" (").append(status.getException().toString()).append(")");
+		}
+
+		for (IStatus child : status.getChildren()) {
+			builder.append('\n').append(formatStatus(child, indent + "  "));
+		}
+
+		return builder.toString();
+	}
+
+	private String formatSeverity(int severity) {
+		if (severity == IStatus.OK) {
+			return "OK";
+		} else if (severity == IStatus.ERROR) {
+			return "ERROR";
+		} else if (severity == IStatus.WARNING) {
+			return "WARNING";
+		} else if (severity == IStatus.INFO) {
+			return "INFO";
+		} else if (severity == IStatus.CANCEL) {
+			return "CANCEL";
+		} else {
+			return "severity=" + severity;
+		}
+	}
+
 	/**
 	 * After a successful build of the workspace, update the workspace build
 	 * order to what we have calculated. This assures that the automatic build
diff --git a/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/util/TeaBuildUtil.java b/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/util/TeaBuildUtil.java
index ab2f6f4..d7dd188 100644
--- a/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/util/TeaBuildUtil.java
+++ b/org.eclipse.tea.library.build/src/org/eclipse/tea/library/build/util/TeaBuildUtil.java
@@ -126,7 +126,7 @@
 					// can be compiler confusion and dependencies between
 					// generated artifacts.
 
-					log.info(logTxt + ": fast recompile (" + status + ")");
+					log.info(logTxt + ": fast recompile");
 
 					project.build(IncrementalProjectBuilder.FULL_BUILD, null);
 					status = getStatus(element);