public final class VerboseProcess extends Object implements Closeable
stdout from a running process
and logging it through SLF4J.
For example:
String name = new VerboseProcess(
new ProcessBuilder("who", "am", "i")
).stdout();
The class throws an exception if the process returns a non-zero exit code.
The class is thread-safe.
| Modifier and Type | Class and Description |
|---|---|
static class |
VerboseProcess.Result
Class representing the result of a process.
|
| Constructor and Description |
|---|
VerboseProcess(Process prc)
Public ctor.
|
VerboseProcess(ProcessBuilder builder)
Public ctor (builder will be configured to redirect error input to
the
stdout and will receive an empty stdin). |
VerboseProcess(ProcessBuilder bdr,
Level stdout,
Level stderr)
Public ctor, with a given process and logging levels for
stdout
and stderr. |
VerboseProcess(Process prc,
Level stdout,
Level stderr)
Public ctor, with a given process and logging levels for
stdout
and stderr. |
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
String |
stdout()
Get
stdout from the process, after its finish (the method will
wait for the process and log its output). |
String |
stdoutQuietly()
Get
stdout from the process, after its finish (the method will
wait for the process and log its output). |
VerboseProcess.Result |
waitFor()
Wait for the process to stop, logging its output in parallel.
|
public VerboseProcess(Process prc)
prc - The process to work withpublic VerboseProcess(ProcessBuilder builder)
stdout and will receive an empty stdin).builder - Process builder to work withpublic VerboseProcess(Process prc, Level stdout, Level stderr)
stdout
and stderr. Neither stdout nor stderr cannot be
set to Level.ALL because it is intended to be used only for
internal configuration.prc - Process to execute and monitorstdout - Log level for stdoutstderr - Log level for stderrpublic VerboseProcess(ProcessBuilder bdr, Level stdout, Level stderr)
stdout
and stderr.bdr - Process builder to execute and monitorstdout - Log level for stdoutstderr - Log level for stderrpublic String stdout()
stdout from the process, after its finish (the method will
wait for the process and log its output).
The method will check process exit code, and if it won't be equal
to zero a runtime exception will be thrown. A non-zero exit code
usually is an indicator of problem. If you want to ignore this code,
use stdoutQuietly() instead.
stdout of the processpublic String stdoutQuietly()
stdout from the process, after its finish (the method will
wait for the process and log its output).
This method ignores exit code of the process. Even if it is
not equal to zero (which usually is an indicator of an error), the
method will quietly return its output. The method is useful when
you're running a background process. You will kill it with
Process.destroy(), which usually will lead to a non-zero
exit code, which you want to ignore.
stdout of the processpublic VerboseProcess.Result waitFor() throws InterruptedException
InterruptedException - If interrupted in betweenpublic void close()
close in interface Closeableclose in interface AutoCloseableCopyright © 2012–2019 jcabi.com. All rights reserved.