aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java
diff options
context:
space:
mode:
authorGravatar philwo <philwo@google.com>2017-04-28 00:25:38 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-04-28 01:04:24 +0200
commit783ad60bb70b4ad998735af240cea722cf97bbc4 (patch)
tree8e1e5a245e6c0a2326411c7246abe8bbe722614d /src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java
parent93aea2e9b53120140a9a154971ec18bf6c1412f8 (diff)
Add support for logging exception details via ErrorMessage.
Part of #2855. PiperOrigin-RevId: 154477854
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java b/src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java
index d02d3f36c8..46d32985cb 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java
@@ -42,6 +42,7 @@ abstract class ErrorMessage {
private Path logFile;
private String logText = "";
private int logSizeLimit = Integer.MAX_VALUE;
+ private Exception exception;
private Builder() {}
@@ -90,9 +91,22 @@ abstract class ErrorMessage {
return this;
}
+ /** Lets the error message contain the details of an exception. */
+ public Builder exception(Exception e) {
+ this.exception = e;
+ return this;
+ }
+
/** Builds and returns the formatted error message. */
public ErrorMessage build() {
StringBuilder sb = new StringBuilder(message);
+
+ if (exception != null) {
+ sb.append("\n\n---8<---8<--- Exception details ---8<---8<---\n");
+ sb.append(Throwables.getStackTraceAsString(exception).trim());
+ sb.append("\n---8<---8<--- End of exception details ---8<---8<---");
+ }
+
if (!logText.isEmpty()) {
sb.append("\n\n---8<---8<--- Start of log");
if (logText.length() > logSizeLimit) {