Skip to content

Commit 8d88246

Browse files
authored
Merge pull request #17 from zonkyio/process-logging
#16 Fix process logging
2 parents bdf2945 + 17dbb7f commit 8d88246

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

src/main/java/io/zonky/test/db/postgres/embedded/EmbeddedPostgres.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ private void startPostmaster() throws IOException
257257
pgBin("pg_ctl"),
258258
"-D", dataDirectory.getPath(),
259259
"-o", createInitOptions().stream().collect(Collectors.joining(" ")),
260+
"-w",
260261
"start"
261262
));
262263

@@ -621,7 +622,7 @@ private void system(String... command)
621622
ProcessOutputLogger.logOutput(LOG, process, processName);
622623
}
623624
if (0 != process.waitFor()) {
624-
throw new IllegalStateException(String.format("Process %s failed%n%s", Arrays.asList(command), IOUtils.toString(process.getErrorStream())));
625+
throw new IllegalStateException(String.format("Process %s failed", Arrays.asList(command)));
625626
}
626627
} catch (final RuntimeException e) { // NOPMD
627628
throw e;

src/main/java/io/zonky/test/db/postgres/embedded/ProcessOutputLogger.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
import java.io.BufferedReader;
1919
import java.io.IOException;
2020
import java.io.InputStreamReader;
21+
import java.io.UncheckedIOException;
2122
import java.lang.invoke.MethodHandles;
2223
import java.lang.invoke.MethodType;
2324
import java.lang.reflect.Field;
2425
import java.nio.charset.StandardCharsets;
25-
import java.util.Optional;
2626

2727
import static org.apache.commons.lang3.StringUtils.isNotBlank;
2828

@@ -38,25 +38,20 @@
3838
final class ProcessOutputLogger implements Runnable {
3939
@SuppressWarnings("PMD.LoggerIsNotStaticFinal")
4040
private final Logger logger;
41-
private final Process process;
4241
private final BufferedReader reader;
4342

4443
private ProcessOutputLogger(final Logger logger, final Process process) {
4544
this.logger = logger;
46-
this.process = process;
47-
reader = new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8));
45+
this.reader = new BufferedReader(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8));
4846
}
4947

5048
@Override
5149
public void run() {
5250
try {
53-
while (process.isAlive()) {
54-
try {
55-
Optional.ofNullable(reader.readLine()).ifPresent(logger::info);
56-
} catch (final IOException e) {
57-
logger.error("while reading output", e);
58-
return;
59-
}
51+
try {
52+
reader.lines().forEach(logger::info);
53+
} catch (final UncheckedIOException e) {
54+
logger.error("while reading output", e);
6055
}
6156
} finally {
6257
try {

0 commit comments

Comments
 (0)