// Copyright (c) 2002 Dustin Sallings <dustin@spy.net>
package net.spy.log;
/**
* An OutputStream that logs to a Logger.
*/
public class LoggingOutputStream extends LineGettingOutputStream {
private final Logger logger;
private final Level level;
private static final String STDOUT_NAME="stdout";
private static final String STDERR_NAME="stderr";
/**
* Get an instance of LoggingOutputStream.
*/
public LoggingOutputStream(String name) {
this(name, Level.INFO);
}
/**
* Get an instance of LoggingOutputStream.
*/
public LoggingOutputStream(String name, Level lv) {
super();
logger=LoggerFactory.getLogger(name);
this.level=lv;
}
/**
* Send the stuff to the logger.
*
* @param chunk
*/
@Override
protected void processChunk(String chunk) {
logger.log(level, chunk);
}
/**
* Redefine stdout and stderr using new logging streams.
*/
public static void redefineOutputs() {
LoggingOutputStream out=new LoggingOutputStream(STDOUT_NAME);
LoggingOutputStream err=new LoggingOutputStream(STDERR_NAME,
Level.ERROR);
out.setOut();
err.setErr();
}
}