diff options
author | 2017-04-28 00:25:38 +0200 | |
---|---|---|
committer | 2017-04-28 01:04:24 +0200 | |
commit | 783ad60bb70b4ad998735af240cea722cf97bbc4 (patch) | |
tree | 8e1e5a245e6c0a2326411c7246abe8bbe722614d /src/main/java/com/google/devtools/build/lib/worker/ErrorMessage.java | |
parent | 93aea2e9b53120140a9a154971ec18bf6c1412f8 (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.java | 14 |
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) { |