I have a method which runs asynchronously after start, using OutputStream or Writer as parameter.
It acts as a recording adapter for an OutputStream or Writer (i
Building on Arthur Neves answer, I transferred this for Slf4J. I also improved this a bit using StringBuffer and directly casting byte to char:
import java.io.OutputStream;
import org.slf4j.Logger;
public class LogOutputStream extends OutputStream {
private final Logger logger;
/** The internal memory for the written bytes. */
private StringBuffer mem;
public LogOutputStream( final Logger logger ) {
this.logger = logger;
mem = new StringBuffer();
}
@Override
public void write( final int b ) {
if ( (char) b == '\n' ) {
flush();
return;
}
mem = mem.append( (char) b );
}
@Override
public void flush() {
logger.info( mem.toString() );
mem = new StringBuffer();
}
}