Package com.jcabi.log
Class VerboseProcess
- java.lang.Object
-
- com.jcabi.log.VerboseProcess
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public final class VerboseProcess extends Object implements Closeable
Utility class for gettingstdout
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.
- Since:
- 0.5
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
VerboseProcess.Result
Class representing the result of a process.
-
Constructor Summary
Constructors Constructor Description VerboseProcess(Process prc)
Public ctor.VerboseProcess(ProcessBuilder builder)
Public ctor (builder will be configured to redirect error input to thestdout
and will receive an emptystdin
).VerboseProcess(ProcessBuilder bdr, Level stdout, Level stderr)
Public ctor, with a given process and logging levels forstdout
andstderr
.VerboseProcess(Process prc, Level stdout, Level stderr)
Public ctor, with a given process and logging levels forstdout
andstderr
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
String
stdout()
Getstdout
from the process, after its finish (the method will wait for the process and log its output).String
stdoutQuietly()
Getstdout
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.
-
-
-
Constructor Detail
-
VerboseProcess
public VerboseProcess(Process prc)
Public ctor.- Parameters:
prc
- The process to work with
-
VerboseProcess
public VerboseProcess(ProcessBuilder builder)
Public ctor (builder will be configured to redirect error input to thestdout
and will receive an emptystdin
).- Parameters:
builder
- Process builder to work with
-
VerboseProcess
public VerboseProcess(Process prc, Level stdout, Level stderr)
Public ctor, with a given process and logging levels forstdout
andstderr
. Neitherstdout
norstderr
cannot be set toLevel.ALL
because it is intended to be used only for internal configuration.- Parameters:
prc
- Process to execute and monitorstdout
- Log level for stdoutstderr
- Log level for stderr- Since:
- 0.11
-
VerboseProcess
public VerboseProcess(ProcessBuilder bdr, Level stdout, Level stderr)
Public ctor, with a given process and logging levels forstdout
andstderr
.- Parameters:
bdr
- Process builder to execute and monitorstdout
- Log level for stdoutstderr
- Log level for stderr- Since:
- 0.12
-
-
Method Detail
-
stdout
public String stdout()
Getstdout
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.- Returns:
- Full
stdout
of the process
-
stdoutQuietly
public String stdoutQuietly()
Getstdout
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.- Returns:
- Full
stdout
of the process - Since:
- 0.10
-
waitFor
public VerboseProcess.Result waitFor() throws InterruptedException
Wait for the process to stop, logging its output in parallel.- Returns:
- Stdout produced by the process
- Throws:
InterruptedException
- If interrupted in between
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
-