package betsy.bpel.virtual.host.virtualbox.utils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Objects;
import org.apache.log4j.Logger;
/**
* Use the {@link InputStreamLogger} to capture a given {@link InputStream} and
* log all it's content to a log4j {@link Logger}.
*
* @author Cedric Roeck
* @version 1.0
*/
public class InputStreamLogger extends Thread {
private final InputStream stream;
private final String description;
private final static Logger log = Logger.getLogger(InputStreamLogger.class);
public InputStreamLogger(final InputStream stream, final String desc) {
this.stream = Objects.requireNonNull(stream);
this.description = Objects.requireNonNull(desc);
}
@Override
public void run() {
try (InputStreamReader inputStreamReader = new InputStreamReader(stream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
log.info(description + ": " + line);
}
} catch (Exception exception) {
log.fatal("Exception while logging stream output:", exception);
}
}
}