From 3ae02b0b602a923dc8545c1825bd969e76411509 Mon Sep 17 00:00:00 2001 From: Timo Rantalaiho Date: Wed, 12 Feb 2014 21:53:23 +0200 Subject: [PATCH] Show stacktrace of startup exception Whether or not the stacktrace is displayed is controlled by bootstrap log level setting, so that bootstrap: DEBUG displays the stack trace on output, like it does on log Closes #5102 --- src/main/java/org/elasticsearch/ExceptionsHelper.java | 10 ++++++++++ .../java/org/elasticsearch/bootstrap/Bootstrap.java | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/main/java/org/elasticsearch/ExceptionsHelper.java b/src/main/java/org/elasticsearch/ExceptionsHelper.java index 2f075a46a41..da17c95e643 100644 --- a/src/main/java/org/elasticsearch/ExceptionsHelper.java +++ b/src/main/java/org/elasticsearch/ExceptionsHelper.java @@ -23,6 +23,9 @@ import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.rest.RestStatus; +import java.io.PrintWriter; +import java.io.StringWriter; + /** * */ @@ -110,4 +113,11 @@ public final class ExceptionsHelper { return t.getClass().getSimpleName() + "[" + t.getMessage() + "]"; } } + + public static String stackTrace(Throwable e) { + StringWriter stackTraceStringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stackTraceStringWriter); + e.printStackTrace(printWriter); + return stackTraceStringWriter.toString(); + } } diff --git a/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java b/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java index 28aa9383a07..90a4a75049c 100644 --- a/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java +++ b/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java @@ -274,6 +274,9 @@ public class Bootstrap { } else { errorMessage.append("- ").append(ExceptionsHelper.detailedMessage(e, true, 0)); } + if (Loggers.getLogger(Bootstrap.class).isDebugEnabled()) { + errorMessage.append("\n").append(ExceptionsHelper.stackTrace(e)); + } return errorMessage.toString(); } }