docs/docs-core/src/main/java/com/sismics/util/io/InputStreamReaderThread.java

52 lines
1.3 KiB
Java

package com.sismics.util.io;
import com.google.common.io.Closer;
import org.apache.log4j.Logger;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* Thread that consumes data from an input stream and logs it.
*
* @author jtremeaux
*/
public class InputStreamReaderThread extends Thread {
private static final Logger logger = Logger.getLogger(InputStreamReaderThread.class);
private InputStream is;
private String name;
private Closer closer = Closer.create();
public InputStreamReaderThread(InputStream input, String name) {
super(name + " InputStreamReader thread");
this.is = closer.register(input);
this.name = name;
}
@Override
public void run() {
try {
BufferedReader reader = closer.register(new BufferedReader(new InputStreamReader(is)));
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
if (logger.isDebugEnabled()) {
logger.debug(String.format(name + ": %s", line));
}
}
} catch (IOException x) {
// NOP
} finally {
try {
closer.close();
} catch (Exception e) {
// NOP
}
}
}
}