public interface LogStream extends Iterator<LogMessage>, Closeable
Modifier and Type | Method and Description |
---|---|
void |
attach(OutputStream stdout,
OutputStream stderr)
Attaches two
OutputStream s to the LogStream . |
void |
attach(OutputStream stdout,
OutputStream stderr,
boolean closeAtEof)
Attaches two
OutputStream s to the LogStream . |
void |
close()
Redefine to not throw checked exceptions.
|
String |
readFully() |
forEachRemaining, hasNext, next, remove
String readFully()
void attach(OutputStream stdout, OutputStream stderr) throws IOException
OutputStream
s to the LogStream
. Closes the streams after
use.stdout
- OutputStream for the standard outstderr
- OutputStream for the standard errIOException
- if an I/O error occursfor control over stream lifecycles
void attach(OutputStream stdout, OutputStream stderr, boolean closeAtEof) throws IOException
OutputStream
s to the LogStream
.
Example usage:
dockerClient
.attachContainer(containerId,
AttachParameter.LOGS, AttachParameter.STDOUT,
AttachParameter.STDERR, AttachParameter.STREAM)
.attach(System.out, System.err);
Typically you use PipedOutputStream
connected to a PipedInputStream
which are read by - for example - an InputStreamReader
or a Scanner
. For small inputs, the PipedOutputStream
just writes to the buffer of the PipedInputStream
,
but you actually want to read and write from separate threads, as it may deadlock the thread.
final PipedInputStream stdout = new PipedInputStream();
final PipedInputStream stderr = new PipedInputStream();
final PipedOutputStream stdout_pipe = new PipedOutputStream(stdout);
final PipedOutputStream stderr_pipe = new PipedOutputStream(stderr);
executor.submit(new Callable<Void>() {
@Override
public Void call() throws Exception {
dockerClient.attachContainer(containerId,
AttachParameter.LOGS, AttachParameter.STDOUT,
AttachParameter.STDERR, AttachParameter.STREAM
.attach(stdout_pipe, stderr_pipe);
return null;
}
});
try (Scanner sc_stdout = new Scanner(stdout); Scanner sc_stderr = new Scanner(stderr)) {
// ... read here
}
stdout
- OutputStream for the standard outstderr
- OutputStream for the standard errcloseAtEof
- whether to close the streams when this log stream endsIOException
- if an I/O error occursPipedInputStream
,
PipedOutputStream
void close()
close
in interface AutoCloseable
close
in interface Closeable
Copyright © 2018. All rights reserved.