diff --git a/buildSrc/src/main/java/org/springframework/boot/build/docs/ApplicationRunner.java b/buildSrc/src/main/java/org/springframework/boot/build/docs/ApplicationRunner.java index b66a60edfb..ba2f59ddde 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/docs/ApplicationRunner.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/docs/ApplicationRunner.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -133,8 +134,10 @@ public class ApplicationRunner extends DefaultTask { private void awaitLogging(Process process) { long end = System.currentTimeMillis() + 30000; String expectedLogging = this.expectedLogging.get(); + List outputLines = Collections.emptyList(); while (System.currentTimeMillis() < end) { - for (String line : outputLines()) { + outputLines = outputLines(); + for (String line : outputLines) { if (line.contains(expectedLogging)) { return; } @@ -143,7 +146,10 @@ public class ApplicationRunner extends DefaultTask { throw new IllegalStateException("Process exited before '" + expectedLogging + "' was logged"); } } - throw new IllegalStateException("'" + expectedLogging + "' was not logged within 30 seconds"); + StringBuilder message = new StringBuilder( + "After 30 seconds '" + expectedLogging + "' had not be logged in the following output:\n\n"); + outputLines.forEach((line) -> message.append(line).append("\n")); + throw new IllegalStateException(message.toString()); } private List outputLines() {